#include"stdio.h"
void Print_Factorial ( const int N )
{
int mup=1;
if(N<0){printf("Invalid input");return;}
if(N==0){printf("%d",mup);return;}
if(N<=12)
{
for(int i=1;i<=N;i++)
mup=mup*i;
printf("%d",mup);
}
else
{
if(N<=1000&&N>12)
{
int site[ 10000]={0};
int n=0;
int k=1;
int temp=0;
site[0]=1;
for(int i=2;i<=N;i++)
{
for(int j=0;j<k;j++)
{
temp=site[j]*i+n;
site[j]=temp%10;
n=temp/10;
}
while(n!=0)
{
site[k]=n%10;
k++;
n=n/10;
}
}
for(int l=k-1;l>=0;l--)
printf("%d",site[l]);
return;
}
}
return;
}
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
void Print_Factorial ( const int N )
{
int mup=1;
if(N<0){printf("Invalid input");return;}
if(N==0){printf("%d",mup);return;}
if(N<=12)
{
for(int i=1;i<=N;i++)
mup=mup*i;
printf("%d",mup);
}
else
{
if(N<=1000&&N>12)
{
int site[ 10000]={0};
int n=0;
int k=1;
int temp=0;
site[0]=1;
for(int i=2;i<=N;i++)
{
for(int j=0;j<k;j++)
{
temp=site[j]*i+n;
site[j]=temp%10;
n=temp/10;
}
while(n!=0)
{
site[k]=n%10;
k++;
n=n/10;
}
}
for(int l=k-1;l>=0;l--)
printf("%d",site[l]);
return;
}
}
return;
}
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
源于10进制乘法的原理,可举例验证。