找回密码
 欢迎注册
查看: 66|回复: 12

[讨论] 五道难题求解

[复制链接]
发表于 昨天 17:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
五道有趣的难题求解
五道难题.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 15 小时前 | 显示全部楼层
第3题: 1587000

  1. x=Select[Range[0,2*10^6],!LessEqual@@IntegerDigits[#]&&!GreaterEqual@@IntegerDigits[#]&];
  2. y=Select[Table[{100*k/x[[k]],x[[k]]},{k,Length@x}],IntegerQ@#[[1]]&];
  3. z=GatherBy[y,First][[All,1]]//TableForm
复制代码


%     Min
------------------
15        160
20        175
50        538
52        625
70        2270
75        3088
80        4770
84        7450
90        21780
91        27900
92        31525
94        49250
95        63720
96        152975
97        208200
98        377650
99        1587000

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 6 小时前 | 显示全部楼层
16核全开,直接上暴力美学.
第一题: $1929374254627488900 = 1389019170^2$
  1. SetSharedVariable[lst];lst={};
  2. func=Function[{i,b},FromDigits[Riffle[Range[7],IntegerDigits[i]]]*1000+b];
  3. ParallelDo[If[IntegerQ[Sqrt[func[i,#]]],AppendTo[lst,func[i, #]];Print[{func[i,#],Sqrt[func[i,#]]}]]&/@{809,849,889},{i,10^6,10^7}]
复制代码


第二题: 有138个,和是1922364685
  1. SetSharedVariable[lst];lst={};
  2. ParallelDo[If[IntegerQ[Sqrt[DivisorSigma[2,i]]],AppendTo[lst,i]],{i,1,64*10^6}]
  3. Total[lst]
复制代码

点评

改过来了, :)  发表于 6 小时前
1929374254627488900=1389019170^2  发表于 6 小时前

评分

参与人数 1威望 +8 金币 +8 贡献 +8 经验 +8 鲜花 +8 收起 理由
northwolves + 8 + 8 + 8 + 8 + 8 赞一个!学习了

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 6 小时前 | 显示全部楼层
貌似第2题也只能遍历
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 6 小时前 | 显示全部楼层
wayne 发表于 2025-2-22 08:37
16核全开,直接上暴力美学.
第一题: $1929374254627488900 = 1389019170^2$
第二题: 1922364685 ...

确实是唯一解。这个代码如何简化?
  1. a = Select[Range[10000, 14159], StringMatchQ[ToString[#^2], "1" ~~ _ ~~ "2" ~~ _ ~~ "3*"] &];
  2. b = Select[Range[0, 9999], StringMatchQ[ToString[#^2], "*8" ~~ _ ~~ "9"] &];
  3. For[x = 1,  x <= Length@a, x++, For[y = 1, y <= Length@b, y++, k = a[[x]]*10^4 + b[[y]];
  4.   If[StringMatchQ[ToString[k^2],
  5.     "1" ~~ _ ~~ "2" ~~ _ ~~ "3" ~~ _ ~~ "4" ~~ _ ~~ "5" ~~ _ ~~
  6.      "6" ~~ _ ~~ "7" ~~ _ ~~ "8" ~~ _ ~~ "9"], Print[k]]]]
复制代码

点评

在3楼补充了代码  发表于 5 小时前
前5后4分别筛选一下,计算量小了很多:43*240=10320  发表于 5 小时前
数字如何简单匹配呢?  发表于 5 小时前
ParallelDo[If[IntegerQ[Sqrt[FromDigits[Riffle[Range[7],IntegerDigits[i]]]*1000+#]],Print[i]]&/@{809,849,889},{i,10^6,10^7}]  发表于 5 小时前
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 5 小时前 | 显示全部楼层

正确,编程能力也不错啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 5 小时前 | 显示全部楼层
wayne 发表于 2025-2-22 08:37
16核全开,直接上暴力美学.
第一题: $1929374254627488900 = 1389019170^2$
第二题: 有138个,和是1922364685 ...

正确的,你们的编程能力很强。我的机器两个题能没运行出来。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-2-22 15:15 , Processed in 0.039374 second(s), 20 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表