练习系统 实验三 求大整数的阶乘

来源:互联网 发布:linux中复制命令 编辑:程序博客网 时间:2024/06/04 20:04

当前编程题:实验三 大数、枚举问题(16级)---求大整数的阶乘

8.
问题描述
给定一个大整数,计算其阶乘。
输入形式
一行,仅含一个小于100的整数N。
输出形式
N的阶乘。
样例输入
20
样例输出
2432902008176640000


#include<iostream>
#include<string.h>
using namespace std;


int main()
{
int n;
cin>>n;
int aa[100000];
memset(aa,0,sizeof(aa));
aa[0]=1; 
int k=1,i,j;
for(i=1;i<=n;i++)
{
for(j=0;j<k;j++)
{
aa[j]=aa[j]*i;
}
for(j=0;j<k;j++)
{
if(aa[j]>=10)
{
aa[j+1]+=aa[j]/10;
aa[j]=aa[j]%10;
}
}
if(aa[j]>0)
{
k++;
if(aa[j]>=10)
{
aa[j+1]+=aa[j]/10;
aa[j]=aa[j]%10;
k++;
if(aa[j+1]>=10)
{
aa[j+2]+=aa[j+1]/10;
aa[j+1]=aa[j]%10; 
k++;
}
}
}
}
for(i=0;i<k;i++)
{
cout<<aa[k-1-i];
}
cout<<endl;
}
0 0
原创粉丝点击