题目:
解题思路:
用一个数组去记录结果数值,当前的每一位都去乘以i然后考虑进位问题,在每一轮乘以i后都要考虑最后一位是否需要进位的问题;
#include<stdio.h>
#include<string.h>
int s[100000];
int main()
{
int i,j,n,temp,k,count;
while(scanf("%d", &n)!=EOF)
{
memset(s,0,sizeof(s));
s[0]=1;
count=1;
for(i=1; i<=n; i++)
{
k=0;
for(j=0; j<count; j++)
{
temp=s[j]*i+k;
s[j]=temp%10;//把数据从后往前存所以把余数赋给当前的j把除的结果存到j+1;
k=temp/10;
}
while(k)
{
s[count++]=k%10;
k/=10;
}
}
while(s[count]==0) count--;//去除前导0
for(i=count; i>=0; i--)
printf("%d", s[i]);
printf("\n");
}
return 0;
}