|
|
1
8
模10^6相乘。看到这个了吗 Lua code .
|
|
|
2
8
|
|
3
4
Python中的暴力解决方案:
在我的机器上运行10秒以上:
|
|
4
2
与其说是回答,不如说是暗示: 观察7的幂的最右边数字的模式是1,7,9,3,1,7,9,3,1,7,。。。所以你只需要从3次方开始,每4次方产生7。进一步研究可能会发现两个(三,四,…)最右边的数字的模式,但我还没有为您研究它们。 为一些非常大的数字做好准备, 数学软件 我猜这回答了你的问题——一个更快的方法是在SO上发布,然后等待有人告诉你答案!如果你不喜欢SO算法,你甚至可以试试Wolfram Alpha。 |
|
|
5
2
费马的小定理方法是一种数学上合理的方法,只需反复乘以7模10^6是最简单的代码,但是你可以采用另一种方法,计算效率高(但需要更复杂的代码)。首先,注意当乘以7时 数字仅取决于 最后的
二 当上升7^4时,数字总是相同的。 最后三个呢?那么,7^3=343,7^4以401结尾,所以我们得到mod 1000
我们在#2(543)列中得到了前三位数字,我们看到序列每5次重复一次,所以我们应该从那里上升到7^20。 我们可以一次又一次地玩这个把戏:找出下一个数字块重复的频率,找出该块中正确的子序列,然后不是乘以7而是乘以7^n。
所以,如果我们发现 对于我们想要的数字,我们现在可以通过找到合适的环的大小来找到它们。在我们的例子中,使用6位数字(即mod 10^6)和基数7,我们发现重复大小为:
所以,我们得到了答案!7^7是第一个,7^5007是第二个,7^10007是第三个,以此类推。。 由于这是通用的,我们可以尝试其他答案…11^11=285311670611(8位数字)。让我们看看间隔:
所以,这告诉我们11^50000000007是11^11之后的下一个数字,具有相同的12位数初始集。如果你好奇的话,用手检查一下!
应为3^23。正在检查:
是的!
|
|
|
6
1
另一个提示:您只对最后N个数字感兴趣:您可以执行模10^N的计算,并将结果很好地拟合为整数 |