1. 程式人生 > >P1641 [SCOI2010]生成字符串

P1641 [SCOI2010]生成字符串

scoi2010 計算 cout def 字符串 生成 bit name ace

算是個裸題吧。

c(n+m,n)-c(n+m,n+1) 逆元計算,別忘了取模

 1 #include"bits/stdc++.h"
 2 using namespace std;
 3 typedef long long ll;
 4 
 5 const ll mod = 20100403;
 6 
 7 int n,m;
 8 
 9 ll jc[3000000];
10 
11 void exgcd(ll a,ll b,ll &x,ll &y)
12 {
13    if(!b)
14    {
15         x=1,y=0; 
16         return
; 17 } 18 exgcd(b,a%b,x,y); 19 ll t=x; 20 x=y; 21 y=t-(a/b)*y; 22 23 } 24 25 ll C(ll n,ll m) 26 { ll x,y; 27 exgcd((jc[m]*jc[n-m])%mod,mod,x,y); 28 return jc[n]*x%mod; 29 } 30 int main() 31 { 32 cin>>n>>m; 33 jc[1]=1; 34 for (int i=2
;i<=n+m;i++)jc[i]=jc[i-1]*i%mod; 35 cout<<((C(n+m,n)-C(n+m,n+1))%mod+mod)%mod; 36 37 38 } 39 40 41 /* 42 1 43 2 2 44 3 5 5 45 4 9 14 146 46 5 14 28 42 42 47 6 20 48 90 132 132 48 7 27 75 165 297 429 429 49 8 35 110 275 572 1001 1430 1430 50 9 44 154 429 1001 2002 3432 4862 2w62
51 10 54 208 637 1638 3640 7072 11934 16796 16796 52 11 65 273 910 2548 6188 13260 25194 41990 58786 58786 53 12 77 350 1260 3808 9996 23256 48450 90440 149226 208012 208012 54 13 90 440 1700 5508 15504 38760 87210 177650 326876 534888 742900 742900 55 14 104 544 2244 7752 23256 62016 149226 326876 653752 1188640 1931540 2674440 2674440 56 15 119 663 2907 10659 33915 95931 245157 572033 1225785 2414425 4345965 7020405 9694845 9694845 57 16 135 798 3705 14364 48279 144210 389367 961400 2187185 4601610 8947575 15967980 25662825 35357670 35357670 58 59 60 */

P1641 [SCOI2010]生成字符串