题目
输入一个小于1000的正整数,
输出n!的精确值
代码(代码不正确,思路正确)
#include<iostream>
#include<cstdio>
#include<string.h>
using namespace std;
int n,h,a[10000];
int main() {
scanf("%d",&n);
memset(a,0,sizeof(a));
a[1]=1;//初始化1,因为进行乘法运算
h=1;//表示最高位
for(int i=2; i<=n; i++) {
for(int j=1; j<=h; j++)
a[j]*=i; //计算i*(i-1)!的每一位的数字
for(int j=1; j<=h; j++) {
if(a[i]>=10) {//向下一位统一进位
a[j+1]+=a[j]/10;
a[j]%=10;
}
}
while(a[h+1]>0) {//最高位进位
h++;
a[h+1]=a[h]/10;
a[h]%=10;
}
if(a[h+1]>0)h++;//最高位进位
}
for(int i=h; i>0; i--) printf("%d",a[i]);//倒序输出,从最高位输出
return 0;
}