36-40
036done
Module[{list, palindrome}, palindrome[n_] := If[EvenQ@n, FromDigits /@ (Join[
#, Reverse@#
] & /@ IntegerDigits /@ Range[10^(n/2 - 1), 10^(n/2) - 1]), FromDigits /@ (Join[
#, Rest@Reverse@#
] & /@ IntegerDigits /@ Range[10^((n + 1)/2 - 1), 10^((n + 1)/2) - 1])]; list = Flatten[palindrome /@ Range@6]; Total@Select[list, Reverse
@#==
# &@IntegerDigits[#
, 2] &] ]
872187
先构造所有十进制回文数,再进行筛选。六位数的回文数由前三位数唯一决定,以Range[999]替代Range[10^6-1]的使用。
037done
Module[{list0 = {{1}, {2}, {3}, {5}, {7}, {9}}, ans, fq}, fq[list_] := And[And @@ PrimeQ /@ FromDigits /@ NestList[Rest, list, Length
@list - 1], And @@ PrimeQ /@ FromDigits /@ NestList[Most, list, Length
@list - 1]]; ans = FromDigits /@ Last@NestWhile[ {#1 + 1, Select[ Flatten[NestList[ Select[Flatten /@ Tuples[{list0, #1}], PrimeQ@FromDigits
@# &] &, list0, #1], 1], fq
@# && Length
@# > 1 &]} & @@ # &, {1, {}}, Length@Last
@# < 11 &]; Total
@ans ]
748317
038done
Module[{list0 = Range@9, f}, f[x_] := If[x <= 9, Flatten[IntegerDigits /@ {x, 2 x, 3 x, 4 x, 5 x}], If[x <= 99, Flatten[IntegerDigits /@ {x, 2 x, 3 x, 4 x}], If[x <= 999, Flatten[IntegerDigits /@ {x, 2 x, 3 x}], Flatten[IntegerDigits /@ {x, 2 x}] ] ] ]; FromDigits /@ f /@ Select[ Join[Range@9, Range[25, 34], Range[100, 333], Range[5000, 9999]], Sort@f
@#== list0 &] // Max ]
932718654
通过乘积个数对位数及取值范围进行分类。
039done
Module[{list, f}, list = Select[ 2
#[[1]]^2 + 2 #
[[1]] #[[2]] & /@ Select[Tuples[{Range@22, Range@21}], #[[1]] >
#[[2]] && ***[#
[[1]],
#[[2]]] == 1 &], #
<= 1000 &]; f[x_] := x Range[1000/x]; Commonest@Flatten[f /@ list] ]
840
用基本勾股数组{m^2-n^2,2mn,m^2+n^2}寻找即可,注意把基本数组的倍数也考虑进去。
040done
Module[{list, num, ans}, list = 10^Range[2, 6] - Accumulate[9 10^(
# - 1) #
& /@ Range@5]; num = {Floor /@ (list/Range[2, 6]), Mod[list, Range[2, 6]]}; ans =
#[[1]][[#
[[2]]]] & /@ Transpose@{IntegerDigits /@ (10^Range[1, 5] + num[[1]]), num[[2]]}; Times @@ ans ]
210
对一位数占长,两位数占长,……分别统计即可。