算法思路:模拟加法进位,设置一个进位计数器,取余运算得到个位,整除运算得到进位
内层循环,用于模拟每次的乘法,
外层循环用于遍历阶乘运算中的乘数
#include<iostream>
#include<string.h>
#include<ctype.h>
using namespace std;
#define MAX 1000+10
int number[MAX];
int main()
{
memset(number,0,sizeof(number));//标志所有位为0
int n,temp=0;
int sum=0;
number[0]=1;//首位置为1,用于相乘
scanf("%d",&n);
for(int i=2;i<=n;i++)
{
temp=0;
for(int j=0;j<MAX;j++)//模拟进位操作
{
sum=number[j]*i+temp;
number[j]=sum%10;
temp=sum/10;
}
}
int j;
for(j=MAX-1;number[j]==0;j--);
for(;j>=0;j--)
printf("%d",number[j]);
system("pause");
return 0;
}