1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| #include<bits/stdc++.h> using namespace std; #define ll long long #define db double #define mod 10007 ll n; ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b); } ll speed(ll a,ll b,ll p){ ll cur=a,ans=1; while(b){ if(b&1) ans=ans*cur%p; cur=cur*cur%p; b>>=1; } return ans%p; } ll inv(ll t,ll p) { return t==1?1:(p-p/t)*inv(p%t,p)%p; } ll Scomb(ll _n,ll _m,ll p){ if(_m==0) return 1; ll ans=1,tmp=1; for(ll i=_m+1;i<=_n;i++){ ans=(ans*i)%p; } for(ll i=1;i<=_n-_m;i++){ tmp=(tmp*i)%p; } return ans*inv(tmp%p,p)%p; } ll Bcomb(ll _n,ll _m,ll p){ if(_n<p&&_m<p) return Scomb(_n,_m,p)%p; return Bcomb(_n/p,_m/p,p)*Scomb(_n%p,_m%p,p)%p; }
int main(){ cin>>n; n--; ll ans=2*Bcomb(2*n,n,mod)*speed(n+1,mod-2,mod)%mod; cout<<ans<<endl; return 0; }
|