阶乘之和(防止int类型溢出的小技巧&计时函数)
计算前n个正整数阶乘之和的后六位:
注意点是,用一个int类型储存阶乘之和时,要防止溢出
一,在每一次处理阶乘(fa)或者阶乘之和(s)时,都对10^6取余,这样最终结果不变,还避免了越界
二,计时函数可以用来观察程序执行时间
用法:
printf("%f",(double)clock()/CLOCKS_PER_SEC);
代码:
#include"iostream" #include"ctime" using namespace std; int main() { const int MOD = 1e6; int n,s=0; scanf("%d",&n); for(int i=1;i<=n;++i){ int fa=1; for(int j=1;j<=i;++j) fa=(fa*j%MOD); s=(s+fa)%MOD; } printf("%d\n",s); printf("Time used = %.2f\n",(double)clock()/CLOCKS_PER_SEC); return 0; }
柳暗花明又一村