本文共 1314 字,大约阅读时间需要 4 分钟。
/**@Author: STZG*@Language: C++*/#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#define DEBUG#define RI register intusing namespace std;typedef long long ll;typedef __int128 lll;const int N=100010;const int MOD=1e9+7;const double PI = acos(-1.0);const double EXP = 1E-8;const int INF = 0x3f3f3f3f;int t,n,m,k,q;int he[N],num[N],s[N];inline void add(){ memset(he,0,sizeof(he)); he[0]=max(s[0],num[0]); for(RI i=1;i<=he[0];++i) { he[i]+=s[i]+num[i]; he[i+1]=he[i]/10; he[i]%=10; } while(he[ he[0]+1 ]>0) { he[ he[0]+2 ]=he[ he[0]+1 ]/10; he[ he[0]+1 ]%=10; he[0]++; } s[0]=he[0]; for(RI i=1;i<=he[0];++i) s[i]=he[i];}int main(){#ifdef DEBUG freopen("input.in", "r", stdin); //freopen("output.out", "w", stdout);#endif scanf("%d",&n); num[0]=1,num[1]=1; s[0]=1,s[0]=0; for(RI k=1;k<=n;++k) { memset(he,0,sizeof(he)); he[0]=num[0]; for(RI i=1;i<=num[0];++i) { he[i]+=num[i]*k; he[i+1]=he[i]/10; he[i]%=10; } while(he[ he[0]+1 ]>0) { he[ he[0]+2 ]=he[ he[0]+1 ]/10; he[ he[0]+1 ]%=10; he[0]++; } for(RI i=1;i<=he[0];++i) num[i]=he[i]; num[0]=he[0]; add(); } for(RI i=s[0];i>=1;--i) printf("%d",s[i]); puts(""); //cout << "Hello world!" << endl; return 0;}
转载地址:http://eyzof.baihongyu.com/