一道大数阶乘的题,刚开始写了个程序,tle,,,后来稍微优化了一下,跑了1500多ms,,,据说还可以优化很多,,算法真的是博大精深啊。。。题目:
1 2 3
1 2 6
ac代码:
#include <iostream> using namespace std; int main() { int n; while(cin>>n) { int a[50000]={0},i,j,digit=1; a[0]=1; for(i=2;i<=n;++i) { int count; for(j=1,count=0;j<=digit;++j) { int s=a[j-1]*i+count; a[j-1]=s%10; count=s/10; } while(count) { a[++digit-1]=count%10; count/=10; } } for(i=digit;i>=1;i--) { cout<<a[i-1]; } cout<<endl; } return 0; }
我再看看还能怎么优化