题目描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
示例1
输入
复制
4 5 15
输出
复制
24 120 1307674368000
//具体算法很简单就是把数字存储在数组中,每一个元素存储一位数字,具体算法就是我们小学学的乘法
例1*2*3*4*5=120时,
2 4
* 5
————
1 2 0
每一位都要和5相乘,至于进位可以用一个中间数temp来代替
#include<bits/stdc++.h>
using namespace std;
int main()
{
int N,a[17000];
while(cin>>N)
{
memset(a,0,sizeof(a));
a[0]=1;//方便从2开始乘
for(int i=2;i<=N;i++)
{
int temp=0;
for(int j=0;j<17000;j++)
{
int s=a[j]*i+temp;
a[j]=s%10;
temp=s/10;
}
}
int q;
for(q=16999;q>=0;q--)
{
if(a[q])
break;
}
for(int i=q;i>=0;i--)
cout<<a[i];
cout<<endl;
}
system("pause");
return 0;
}