CSP-SJ信息学资料下载
时间限制: 1000 ms 内存限制: 65536 KB
提交数: 13351 通过数: 3373
【题目描述】
求10000以内n的阶乘。
【输入】
只有一行输入,整数n(0≤n≤10000)。
【输出】
一行,即n!的值。
【输入样例】
4
【输出样例】
24
【来源】
No
代码如下:
#include<iostream>
#include<cstring>
using namespace std;
int n,y,i;
int a[100000],ay[100000];
int main()
{
cin>>n;
a[0]=1; //高精度数的位数
a[1]=1; //高精度整数1(逆向存储,位数放在数组第0个元素)
for(y=1;y<=n;y++)
{
memset(ay,0,sizeof(ay));
ay[0]=a[0];
for (i=1;i<=a[0];i++)
{
ay[i]+=a[i]*y;
ay[i+1]=ay[i]/10; //向高位进位
ay[i]%=10;
}
while(ay[ay[0]+1]>0) //向高位进位
{
ay[ay[0]+2]=ay[ay[0]+1]/10;
ay[ay[0]+1]%=10;
ay[0]++;
}
for(i=1;i<=ay[0];i++) a[i]=ay[i];
a[0]=ay[0];
}
for(i=a[0];i>=1;i--) cout<<a[i];
cout<<endl;
return 0;
}
来源:CSDN
作者:tianli315
链接:https://blog.csdn.net/tianli315/article/details/104220862