• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            Tim's Programming Space  
            Tim's Programming Space
            日歷
            <2010年4月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678
            統(tǒng)計(jì)
            • 隨筆 - 20
            • 文章 - 1
            • 評(píng)論 - 40
            • 引用 - 0

            導(dǎo)航

            常用鏈接

            留言簿(3)

            隨筆檔案

            文章檔案

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

             

            字符串

             

            【題目描述】

            lxhgww最近接到了一個(gè)生成字符串的任務(wù),任務(wù)需要他把n個(gè)1m個(gè)0組成字符串,但是任務(wù)還要求在組成的字符串中,在任意的前k個(gè)字符中,1的個(gè)數(shù)不能少于0的個(gè)數(shù)。現(xiàn)在lxhgww想要知道滿足要求的字符串共有多少個(gè),聰明的程序員們,你們能幫助他嗎?

            【輸入】

            輸入數(shù)據(jù)是一行,包括2個(gè)數(shù)字nm

            【輸出】

            輸出數(shù)據(jù)是一行,包括1個(gè)數(shù)字,表示滿足要求的字符串?dāng)?shù)目,這個(gè)數(shù)可能會(huì)很大,只需輸出這個(gè)數(shù)除以20100403的余數(shù)

            【樣例輸入】

            2 2

            【樣例輸出】

            2

            【數(shù)據(jù)范圍】

            對(duì)于30%的數(shù)據(jù),保證1<=m<=n<=1000

            對(duì)于100%的數(shù)據(jù),保證1<=m<=n<=1000000

            =================================================================
            。。。這題是最悲劇的一題。。。以前做過原題。。。然后考試的時(shí)候緊張的啥都不知道了。。。數(shù)學(xué)不過關(guān)啊!!T_T
            一種推導(dǎo)是這樣的:
            總的01串的數(shù)量為C(n+m,n),考慮除去不符合條件的。
            對(duì)于一個(gè)不符合條件的01串,一定有某個(gè)位置使得0的個(gè)數(shù)第一次超過1的個(gè)數(shù),比如:
            1010011010
                  |
            設(shè)該位置是p,在1~p中1的個(gè)數(shù)為a,0的個(gè)數(shù)為a+1
            則在p~n+m中,1的個(gè)數(shù)為n-a,0的個(gè)數(shù)為m-a-1
            如果對(duì)p~n+m中的0和1取反,則在p~n+m中,1的個(gè)數(shù)為m-a-1,0的個(gè)數(shù)為n-a
            對(duì)于這樣一個(gè)變換后的串,共有m-1個(gè)1,n+1個(gè)0。
            由于每一個(gè)不符合條件的有n個(gè)1,m個(gè)0的01串都可以唯一確定對(duì)應(yīng)一個(gè)有m-1個(gè)1,n+1個(gè)0的01串,
            并且每一個(gè)有m-1個(gè)1,n+1個(gè)0的01串一定有一個(gè)位置開始0的個(gè)數(shù)第一次多于1的個(gè)數(shù),把這個(gè)位置之后的串取反后得到的01串可以唯一確定對(duì)應(yīng)一個(gè)有n個(gè)1,m個(gè)0的不符合條件的01串,所以這兩種串是一一對(duì)應(yīng)的。
            所以不符合條件的串的個(gè)數(shù)為C(n+m,n+1)
            所以最后的答案為C(n+m,n) - C(n+m,n+1)
            PS:算這個(gè)的時(shí)候可以分解質(zhì)因數(shù)(hyf神牛神做法),也可以用逆元解決除法的問題。因?yàn)?span lang=EN-US>20100403是質(zhì)數(shù),所以逆元就可以不用解方程算了,直接取a^(p-2)次方即可。

            #include <iostream>
            #define ll long long
            #define MOD 20100403
            #define MAXN 2100000
             
            using namespace std;

            /*
               C(n+m,n) - C(n+m,n+1)
             
            */

            ll n, m;
            ll fact[MAXN
            +1];

            ll PowerMod(ll a, 
            int b){
               
            if (b == 0return 1;
               ll t 
            = PowerMod(a, b>>1);
               t 
            = (t * t) % MOD;
               
            if (b&1) t = (t * a) % MOD;
               
            return t;
            }

            ll Rev(ll a)
            {
               
            return PowerMod(a, MOD-2);
            }

            void Init(){
                 cin 
            >> n >> m;
            }


            ll C(
            int n, int m){
               
            return fact[n] * Rev(fact[m]) % MOD * Rev(fact[n-m]) % MOD;
            }

            void Solve(){
                 fact[
            0= 1;
                 
            for (ll i = 1; i<=n+m; i++)
                     fact[i] 
            = (fact[i-1* i) % MOD;
                 cout 
            << ((C(n+m,n) - C(n+m,n+1)) % MOD + MOD) % MOD;
            }


            int main(){
                freopen(
            "string.in","r",stdin);
                freopen(
            "string.out","w",stdout);
                Init();
                Solve();
                
            return 0;
            }

            posted on 2010-04-08 09:54 TimTopCoder 閱讀(744) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


             
            Copyright © TimTopCoder Powered by: 博客園 模板提供:滬江博客
            久久久久亚洲精品天堂久久久久久| 国产精品亚洲美女久久久| 人人妻久久人人澡人人爽人人精品| 久久久午夜精品福利内容| 亚洲精品无码久久久影院相关影片 | 亚洲国产一成人久久精品| 久久水蜜桃亚洲av无码精品麻豆| 欧美亚洲国产精品久久蜜芽| 久久久久18| 亚洲AV乱码久久精品蜜桃| 久久亚洲国产午夜精品理论片| 久久精品?ⅴ无码中文字幕| 无码人妻久久一区二区三区免费 | 99久久99这里只有免费费精品 | 久久免费线看线看| 久久久久久国产a免费观看黄色大片| 亚洲中文字幕无码久久2017| 亚洲国产精品热久久| 囯产精品久久久久久久久蜜桃| 亚洲国产精品人久久| 久久超碰97人人做人人爱| 亚洲精品久久久www| 国内精品久久久久久久涩爱| av午夜福利一片免费看久久| 久久伊人精品一区二区三区| 久久99精品久久久久久9蜜桃| 久久精品www人人爽人人| 香蕉久久久久久狠狠色| 国产成人久久777777| 日本强好片久久久久久AAA| 四虎久久影院| 久久久WWW成人免费毛片| 热久久这里只有精品| 国产精品天天影视久久综合网| 新狼窝色AV性久久久久久| yy6080久久| 精品国产乱码久久久久久人妻 | 色婷婷综合久久久久中文 | 精品久久久久久无码中文野结衣| 俺来也俺去啦久久综合网| 国内精品久久久人妻中文字幕|