求AB*CDE=FGHIJ,各个字母代表0到9的其中的一个
不同的字母表示不同的数字,每个字母是0到9的其中的一个数字,求这九个字母代表的数字! (*利用穷举法解决问题*)(*网址:http://bbs.emath.ac.cn/redirect.php?tid=4410&goto=lastpost#lastpost*)
Clear["Global`*"];(*Clear all variables*)
Do[ c=a*b;(*两个整数的乘积*)
U=Union;(*求出a\b\c三个整数的各个位数,然后取并集*)
If[Length@U==10,(*如果取并集以后是10个数字*)
Print[{a,b,c}]],(*如果达到上面的要求,就打印出三个整数*)
{a,12,98},(*第一个整数*)
{b,123,987}](*第二个整数*)
{27,594,16038}
{36,495,17820}
{39,402,15678}
{45,396,17820}
{46,715,32890}
{52,367,19084}
{54,297,16038}
{63,927,58401}
{78,345,26910} 2# mathematica
运行 Attributes
你会发现 IntegerDigits函数有Listable 的属性。
所以,代码U=Union;可以改写为:U=Union@Flatten@IntegerDigits[{a,b,a*b}]; 我昨天人工解了一下,不过没动笔,在床上冥想的,觉得可行。 4# hujunhua
如果反复的利用同余的性质,兴许不麻烦。
0+1+2+。。。+9 =45
按3的剩余类,三个数被3除余数 都相等。 https://oeis.org/A195814
https://oeis.org/A253172
https://oeis.org/A253173
页:
[1]