题目描述
输入一个正整数N,输出N的阶乘。
输入描述:
正整数N(0<=N<=1000)
输出描述:
输入可能包括多组数据,对于每一组输入数据,输出N的阶乘
示例1
输入
4
5
15
输出
24
120
1307674368000
大数乘法
找到了大数运算基本思路
不需要按王道那本书那样每四位存到一个数组里,
直接模拟,a[0],,,,a[size-1]分别存个位,十位,百位。。。。。
#include<bits/stdc++.h>
using namespace std;
int a[10000];
int size=1;
int main(){
int n;
while(cin>>n){
size=1;
//memset(a,1,sizeof(a));
for(int i=0;i<10000;i++)
a[i]=1;
if(n==0||n==1){
cout<<1<<endl;
continue;
}
for(int i=2;i<=n;i++){
int carry=0;
for(int k=0;k<size;k++){
int t=a[k]*i+carry;
carry=t/10;
a[k]=t%10;
}
// cout<<carry<<endl;
while(carry!=0){
a[size++]=carry%10;
carry/=10;
}
}
// cout<<"size="<<size<<endl;
for(int i=size-1;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}