众所周知答案为C(N,2*N)/(N+1)。
由于本juruo太弱,不会高精除法,只会质因数分解。复杂度多了个sqrt(N)?
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[1000100]; ll t[120100],len=1; void chen(ll x){ for(ll i=1;i<=len;++i)a[i]=a[i]*x; for(ll i=1;i<=len;++i){ a[i+1]+=a[i]/10; a[i]%=10; if(a[len+1])++len; } } int main(){ ll n; scanf("%lld",&n); for(ll i=2*n;i>=n+2;--i){ ll k=i,m=sqrt(k+1); for(ll j=2;j<=m;++j){ while(k%j==0)k/=j,t[j]++; } if(k!=1)t[k]++; } for(ll i=1;i<=n;++i){ ll k=i,m=sqrt(k+1); for(ll j=2;j<=m;++j){ while(k%j==0)k/=j,t[j]--; } if(k!=1)t[k]--; } a[1]=1; for(ll i=1;i<=120100;++i){ for(ll j=1;j<=t[i];++j){ chen(i); } } for(ll i=len;i>=1;--i)printf("%lld",a[i]); return 0; }