50
30414093201713378043612608166064768844377641568960512000000000000
以为会超时呢~~~~就是把每一位数存到数组里面。
#include<stdio.h> #include<string.h> int a[100000]; int main() { int n; while(~scanf("%d",&n)){ int i,j,carry_bit,temp,len=1; memset(a,sizeof(a)); a[0]=1; for(i=2;i<=n;i++){ carry_bit=0; for(j=0;j<len;j++){ temp=a[j]*i+carry_bit; a[j]=temp%10; carry_bit=temp/10; } while(carry_bit){ a[len++]=carry_bit%10; carry_bit/=10; } } for(int i=len-1;i>=0;i--) printf("%d",a[i]); printf("\n"); } }