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
对一位数占长,两位数占长,……分别统计即可。