您的位置:首页 > 其它

杭电1042

2011-10-28 13:40 169 查看
/*********************************

* 日期:2011-3-2

* 作者:SJF

* 题号:杭电1042

* 题目:N!

* 结果:AC

* 总结:高精度算法

**********************************/

#include <stdio.h>

#define MAX 100000//传统6存1算法,转换成100000进制。

int main()

{

int n;

while (scanf("%d",&n)!=EOF)

{

int s[10000]={0};

int i,j,k=0,carry;//k用来控制100000进制的位数,carry进位

if(n==0)//0!规定为1

{

printf("1\n");

continue;

}

s[0]=1;

for(i=1;i<=n;i++)

{

carry=0;

for(j=0;j<=k;j++)

{

s[j]=s[j]*i+carry;

carry=s[j]/MAX;

s[j]%=MAX;

}

if(carry)

{

k++;

s[k]=carry;

}

}

printf("%u",s[k]);

for(i=k-1;i>=0;i--)

{

j=10;

printf("%05d",s[i]);

}

printf("\n");

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: