首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

(0! + 1! + 2! + 3! + 4! + . + n!)%m.有关问题

2012-10-10 
(0! + 1! + 2! + 3! + 4! + ... + n!)%m.问题0 n 10^100 (without leading zero)0 m 1000000这道

(0! + 1! + 2! + 3! + 4! + ... + n!)%m.问题
0 <= n < 10^100 (without leading zero)
0 < m < 1000000

这道题有什么定理可以简化?求思路

[解决办法]
n>=m的时候n!%m==0。所以只要O(m)就可以了

C/C++ code
//用 秦九昭乘法//【用a*~b表示 从a乘到b】 (0! + 1! + 2! + 3! + 4! + ... + n!)=1+(1*~1 + 1*~2 + 1*~3 + 1*~4 + ... + 1*~n)【0的阶乘单独处理】=1+ 1*(1 + 2*~2 + 2*~3+2*~4+ ... +2*~n)=1+ 1*(1 + 2*(1 + 3*~3+3*~4+ 3*~5+ ... +3*~n))...=1+1*(1+2*(1+3*(1+4*(1+5*(...1+(n-1)*(1+n))))))//这样就转化完了//O(m) 

热点排行