#include
#include
#include
#include
int main()
{
const int MODE=1000000;
int s=0;
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
int factorial=1;
for(j=1;j<=i;j++)
factorial=(factorial*j%MODE);
s=(s+factorial)%MODE;
}
printf("%d\n",s);
//printf("Time used=%.2lf\n",(double)clock()/CLOCKS_PER_SEC);
return 0;
}
为什么要除以1000000?????
这是取余,防止阶乘的结果超过int的大小。
想问下,问题发起人。这是c的什么里面所涉及到的语法什么。我怎么在学,没接触到。想了解一下。马
阶乘的结果是天文数字,太大了,即便是double也表示不了。所以不断需要除以1000000,把除掉的放在指数部分中,用科学计数表示。
我觉得是题目中的要求吧,int的范围是2147483647~-2147483648,一楼也说不过去吧,