本文主要是介绍Project Euler_Problem 160_Factorial Trailing Digits_费马小定理,威尔逊定理,左右互搏,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
原题目:
题目大意:1e12的阶乘,不算末尾的0,后5位数字为多少
解题思路: 暴力运算也能算,就是有点慢,优化过后可能也得算个几十分钟
这里考虑使用威尔逊定理+费马小定理
用这个方法我们就可以得到对于任何一个小于p的数n,p为素数,n!在模p下的结果,
对于本题:
则我们要找的答案应该是512628437919+k*39的最后几位有效数字,当k>100000时,显然末尾数字就为37919。 但是我们总不可能遍历k,把十万个答案挨个塞进去吧,所以我们考虑换个p
对于本题还有:
即:
后面有点不会了,以后再说吧
这篇关于Project Euler_Problem 160_Factorial Trailing Digits_费马小定理,威尔逊定理,左右互搏的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!