题目
输入一个正整数n,输出n!的值。 其中n ! =1 * 2 * 3 * … * n
代码
#include<iostream>
#include<math.h>
using namespace std;
int a[10000]; //设置数组
int main()
{
int n; //n表示n阶阶乘
a[0]=1;
scanf("%d",&n);
int temp=0,wei=1; //wei表示结果数的位数,temp表示某一位数乘积后需要进位的值
for(int i=1;i<=n;i++){
for(int j=0;j<wei;j++){ //关键步骤
a[j]=a[j]*i+temp; //记录乘积后的值
temp=a[j]/10; //计算需要进位的值
a[j]=a[j]%10; //表示进位后该位的实际值
if(temp!=0&&wei-1==j) //位数增加
wei+=1;
}
}
for(int i=wei-1;i>=0;i--) //输出阶乘
printf("%d",a[i]);
return 0;
}