描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
输入:
4
5
15
输出:
24
120
1307674368000
代码:
#include <cstdio>
#include <iostream>
using namespace std;
#define MAXLEN 10000
int main() {
int n;
while(cin>>n){
int i,j,up,tmp;
char arr[MAXLEN+1]={1};
for(i=2;i<=n;i++){
for(up=0,j=0;j<=MAXLEN;j++){
tmp=arr[j]*i+up;
arr[j]=tmp%10;
up=tmp/10;
}
}
for(i=MAXLEN;i>=0;i--){
if(arr[i]!=0){
for(i;i>=0;i--){
printf("%d",arr[i]);
}
}
}
cout<<endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
想法:
看起来比大数加法还要简洁,但是输出的过程其实不太清楚,记住吧。尤其是我不太明白为什么最后输出用cout就错误了