青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

風雨

驀然回首 卻在燈火闌珊處
posts - 3, comments - 2, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

[轉載] Computing n choose k mod p

Posted on 2010-05-04 10:07 zgm 閱讀(594) 評論(0)  編輯 收藏 引用

Computing n choose k mod p

Postby joshi13 » Tue Apr 14, 2009 4:49 am

Hi all.

How can we apply the modular multiplicative inverse when calculating

(n choose k) mod p, where 'p' is a prime number.

If you could suggest some related problems, it would be very helpful.

Thanks in advance.


Re: Computing n choose k mod p

Postby mf » Tue Apr 14, 2009 10:56 am

You could use .


Re: Computing n choose k mod p

Postby maxdiver » Tue Apr 14, 2009 12:03 pm

There is another, more "mechanical", but more general, approach. It can be applied to any formula containing factorials over some modulo.

C_n^k = n! / (k! (n-k)!)
Let's learn how to compute n! mod p, but factorial without factors p and so on:
n!* mod p = 1 * 2 * ... * (p-1) * _1_ * (p+1) * (p+2) * ... * (2p-1) * _2_ * (2p+1) * (2p+2) * ... * n.
We took the usual factorial, but excluded all factors of p (1 instead of p, 2 instead of 2p, and so on).
I name this 'strange factorial'.

If n is not very large, we can calculate this simply, then GOTO END_SCARY_MATHS :)
If p is not large, then GOTO BEGIN_SCARY_MATHS:
Else - skip the rest of the post :)

BEGIN_SCARY_MATHS:
After taking each factor mod p, we get:
n!* mod p = 1 * 2 * ... * (p-1) * 1 * 2 * ... * (p-1) * 2 * 1 * 2 * ... * n.
So 'strange factorial' is really several blocks of construction:
1 * 2 * 3 * ... * (p-1) * i
where i is a 1-indexed index of block taken again without factors p ('strange index' :) ).
The last block could be not full. More precisely, there will be floor(n/p) full blocks and some tail (its result we can compute easily, in O(P)).
The result in each block is multiplication 1 * 2 * ... * (p-1), which is common to all blocks, and multiplication of all 'strange indices' i from 1 to floor(n/p).
But multiplication of all 'strange indices' is really a 'strange factorial' again, so we can compute it recursively. Note, that in recursive calls n reduces exponentially, so this is rather fast algorithm.

So... After so much brainfucking maths I must give a code :)
Code: Select all
int factmod (int n, int p) {
   long long res = 1;
   while (n > 1) {
      long long cur = 1;
      for (int i=2; i<p; ++i)
         cur = (cur * i) % p;
      res = (res * powmod (cur, n/p, p)) % p;
      for (int i=2; i<=n%p; ++i)
         res = (res * i) % p;
      n /= p;
   }
   return int (res % p);
}

Asymptotic... There are log_p n iterations of while, inside it there O(p) multiplications, and calculation of power, that can be done in O(log n). So asymptotic is O ((log_p n) (p + log n)).
Unfortunately I didn't check the code on any online judge, but the idea (which was explained by Andrew Stankevich) is surely right.
END_SCARY_MATHS:

So, we can now compute this 'strange factorial' modulo p. Because p is prime, and we've excluded all multiples of p, then the result would be different from zero. This means we can compute inverse for them, and compute C_n^k = n!* / (k!* (n-k)!*) (mod p).
But, of course, before all this, we should check, if p was in the same power in the nominator and denominator of the fraction. If it was indeed in the same power, then we can divide by it, and we get exactly these 'strange factorials'. If the power of p in nominator was greater, then the result will obviously be 0. The last case, when power in denominator is greater than in nominator, is obviously incorrect (the fraction won't be integer).

P.S. How to compute power of prime p in n! ? Easy formula: n/p + n/(p^2) + n/(p^3) + ...


(轉載:http://acm.uva.es/board/viewtopic.php?f=22&t=42690&sid=25bd8f7f17abec626f2ee065fec3703b

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久久久久久网| 亚洲人成在线免费观看| 99国产精品久久久久久久久久 | 亚洲一区二区欧美日韩| 亚洲精品极品| 国产精品magnet| 欧美一区二区三区四区视频| 性视频1819p久久| 伊人久久亚洲美女图片| 亚洲国产高清自拍| 欧美日韩国产欧美日美国产精品| 在线一区二区三区四区| 中文一区在线| 黄色影院成人| 亚洲精品中文字幕有码专区| 国产精品久久久久久久一区探花 | 亚洲毛片在线看| 亚洲一区在线播放| 激情综合视频| 亚洲美女啪啪| 国内精品视频一区| 亚洲人成人一区二区三区| 国产精品久在线观看| 美女免费视频一区| 欧美性事免费在线观看| 久久露脸国产精品| 欧美日本中文字幕| 久久免费视频观看| 欧美日韩一区二区三区高清| 欧美一区二区日韩一区二区| 免费观看不卡av| 亚洲欧美日韩第一区| 美女免费视频一区| 欧美一区二区三区视频在线观看 | 午夜在线观看欧美| 99精品热视频| 久久国产福利国产秒拍| 亚洲午夜av电影| 蜜臀久久99精品久久久画质超高清| 亚洲欧美精品一区| 欧美日本一区| 亚洲第一狼人社区| 激情91久久| 亚洲欧美日本另类| 亚洲一区二区三区精品动漫| 久久午夜视频| 久久只精品国产| 国产欧美丝祙| 亚洲午夜精品一区二区| 在线中文字幕不卡| 欧美丰满高潮xxxx喷水动漫| 麻豆精品在线视频| 国产日韩欧美亚洲一区| 亚洲性视频h| 亚洲欧美日韩网| 欧美日韩免费高清| 亚洲欧洲精品一区二区精品久久久| 韩国av一区二区三区| 欧美亚洲自偷自偷| 久久精品二区三区| 国产一区二区三区在线观看精品 | 久久国产色av| 久久www免费人成看片高清| 欧美性猛片xxxx免费看久爱 | 久久久久久久国产| 国产亚洲欧美日韩日本| 午夜精品在线看| 久久精品欧洲| 国产又爽又黄的激情精品视频| 亚洲欧美另类中文字幕| 久久精品欧美日韩| 一区二区视频免费在线观看| 久久欧美中文字幕| 欧美国产综合视频| 99人久久精品视频最新地址| 欧美男人的天堂| 国产精品99久久久久久白浆小说 | 亚洲电影欧美电影有声小说| 久久伊伊香蕉| 亚洲国产91| 亚洲午夜视频在线观看| 国产精品高精视频免费| 午夜精品一区二区三区在线| 久久久午夜精品| 亚洲欧洲一区二区在线观看| 欧美日韩福利视频| 亚洲欧美日韩人成在线播放| 久久综合网络一区二区| 亚洲精品在线看| 国产精品麻豆va在线播放| 午夜视频在线观看一区| 欧美成人蜜桃| 亚洲一区www| 精品1区2区3区4区| 欧美日韩精品免费观看视一区二区 | 久久久天天操| 日韩视频在线免费观看| 国产精品爽爽爽| 久久久夜精品| 亚洲视频大全| 欧美成人免费在线视频| 亚洲一区二区欧美| 在线看一区二区| 国产精品久久久久国产a级| 久久九九国产| 一区二区三区免费观看| 欧美福利精品| 欧美一区二区三区视频| 99re热这里只有精品视频| 国产日韩欧美麻豆| 欧美日韩日日夜夜| 另类av导航| 欧美一级视频精品观看| 日韩午夜视频在线观看| 欧美www视频在线观看| 午夜精品久久久久久久久| 亚洲精品影视在线观看| 激情综合电影网| 国产精品一区二区久久| 欧美日韩国产页| 欧美成人亚洲成人日韩成人| 欧美一区2区三区4区公司二百| 日韩午夜电影av| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲男人av电影| 一区二区91| 亚洲精品一区久久久久久| 一区精品在线| 国产亚洲综合性久久久影院| 国产精品激情电影| 欧美精品一二三| 欧美超级免费视 在线| 久久亚洲春色中文字幕久久久| 先锋影音网一区二区| 亚洲视频每日更新| 99视频超级精品| 亚洲精品国产精品乱码不99| 亚洲高清在线观看| 欧美激情 亚洲a∨综合| 蜜月aⅴ免费一区二区三区| 久久久久久网站| 久久精品首页| 久久久久久伊人| 久久久久久久久久久久久女国产乱| 西瓜成人精品人成网站| 午夜国产精品视频| 亚洲欧美久久久久一区二区三区| 亚洲一区二区三区午夜| 亚洲在线成人精品| 亚洲欧美成人| 欧美在线999| 久久男人av资源网站| 久久久噜噜噜久久中文字免| 久久一区二区精品| 欧美成人精品一区| 亚洲激情成人网| 亚洲美女免费视频| 亚洲欧美国产精品va在线观看 | 亚洲国产精品国自产拍av秋霞| 免费观看日韩| 亚洲大片在线| 一二三四社区欧美黄| 亚洲天堂免费观看| 欧美在线视频免费播放| 久久久一本精品99久久精品66| 久久免费的精品国产v∧| 欧美成人午夜影院| 国产精品久久久久久亚洲毛片| 国产日韩av一区二区| 在线观看中文字幕不卡| 亚洲最快最全在线视频| 性欧美在线看片a免费观看| 久久亚洲欧美国产精品乐播| 欧美高清在线精品一区| 在线视频欧美日韩| 久久久免费观看视频| 欧美另类视频在线| 国模精品一区二区三区| 亚洲精品一区二区三区在线观看| 亚洲欧美日韩精品久久久久| 玖玖精品视频| 亚洲天堂网在线观看| 久久久久久尹人网香蕉| 国产精品xxxxx| 亚洲风情亚aⅴ在线发布| 亚洲一区在线免费观看| 欧美 亚欧 日韩视频在线| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲主播在线播放| 欧美激情精品久久久久久蜜臀| 国产日韩精品久久| 99在线精品视频| 欧美jizz19hd性欧美| 亚洲永久精品大片| 欧美精品亚洲二区| 在线成人小视频| 欧美一区二区女人| 99精品福利视频| 欧美成人激情视频| 在线成人av网站|