1000及以内的阶乘
#include <stdio.h>
void Print_Factorial ( const int N );
int main()
{
int N;
scanf("%d", &N);
Print_Factorial(N);
return 0;
}
#include<stdio.h>
void Prog(int a[],int i,int* n);
void Print_Factorial(const int N){
int a[2568]={1};
int x=N,k=0;
int* n=&k;
if (N<0){
printf("Invalid input");
return;
}
for(int i=x;i>0;--i){
Prog(a,i,n);
}
for(int i=k;i>=0;--i){
printf("%d",a[i]);
}
printf("\n");
}
void Prog(int a[],int i,int* n){
int pro=0;
int j=0;
for(int h=*n;h>=0;--h){
j=h;
pro=a[h]*i;
while(pro>0){
if(j==h){
a[j]=pro%10;
}else {
a[j]+=pro%10;
if(a[j]>9){
int m=j;
while(a[m]>9){
a[m]=a[m]%10;
a[++m]+=1;
}
if(m>*n) *n=m;
}
}
++j;
pro/=10;
}
--j;
if(j>*n) *n=j;
}
}