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

風雨

驀然回首 卻在燈火闌珊處
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>
            欧美国产一区二区| 国产精品久久久久7777婷婷| 国产色产综合产在线视频| 亚洲一区二区三区精品视频| 在线中文字幕一区| 国产精品久久久久久久app| 在线视频精品一区| 一本大道久久a久久精品综合| 欧美性片在线观看| 欧美一区二区高清| 久久久一二三| 日韩午夜视频在线观看| 亚洲视频免费看| 国产亚洲毛片在线| 欧美高清在线一区| 欧美三日本三级少妇三99 | 亚洲欧美日韩中文在线制服| 国产欧美精品久久| 欧美电影在线观看| 欧美另类videos死尸| 午夜免费日韩视频| 久久免费精品日本久久中文字幕| 亚洲欧洲在线观看| 亚洲一区二区伦理| 亚洲国产精品一区在线观看不卡| 亚洲韩国青草视频| 国产精品手机视频| 欧美激情在线免费观看| 国产精品亚洲精品| 亚洲福利小视频| 国产精品视频自拍| 亚洲激情欧美激情| 国产一级揄自揄精品视频| 亚洲欧洲免费视频| 国外成人在线视频| 亚洲少妇在线| 亚洲精品一级| 久久九九热免费视频| 在线一区二区三区四区五区| 久久久久久久综合日本| 亚洲欧美成人| 欧美成人性网| 美女国产一区| 国产欧美日韩伦理| 99精品欧美一区二区三区综合在线 | 亚洲美女精品一区| 激情亚洲网站| 午夜欧美精品| 亚洲在线视频一区| 欧美激情五月| 亚洲高清视频一区| 一区二区亚洲精品| 欧美一区二区三区在线视频 | 欧美中文字幕第一页| 欧美顶级少妇做爰| 男人的天堂亚洲| 黄色一区二区三区四区| 午夜伦理片一区| 午夜精品视频在线| 欧美先锋影音| 一级日韩一区在线观看| 正在播放亚洲一区| 欧美日本不卡| 日韩视频在线观看| 正在播放日韩| 欧美连裤袜在线视频| 亚洲精品美女在线观看| 亚洲乱码精品一二三四区日韩在线 | 欧美一级大片在线免费观看| 午夜久久资源| 国产午夜精品久久久| 午夜精品久久久久久久久久久久久 | 欧美三级在线播放| 一区二区不卡在线视频 午夜欧美不卡' | 久久国产乱子精品免费女 | 亚洲免费电影在线观看| 欧美激情一区二区在线| 日韩视频在线你懂得| 亚洲视频中文字幕| 国产精品久久久一区二区三区| 亚洲香蕉伊综合在人在线视看| 亚洲免费在线电影| 国产婷婷色综合av蜜臀av| 久久精品中文字幕免费mv| 欧美 日韩 国产在线| 亚洲国产一区二区三区青草影视| 欧美经典一区二区三区| 99精品国产在热久久| 久久国产精品一区二区三区四区| 国外成人在线| 欧美精品在线播放| 亚洲一区免费在线观看| 嫩草国产精品入口| 亚洲免费av电影| 国产精品久久久久久久第一福利 | 麻豆久久婷婷| 一区二区三区四区国产| 国产一区亚洲| 欧美国产日韩xxxxx| 亚洲欧美国产高清| 欧美搞黄网站| 午夜欧美电影在线观看| 亚洲高清二区| 国产欧美日韩在线| 欧美岛国激情| 香蕉久久久久久久av网站| 亚洲国产精品高清久久久| 亚洲欧美一区二区三区在线| 在线观看国产欧美| 国产精品久久久久毛片软件| 久久一区中文字幕| 亚洲一区国产视频| 亚洲品质自拍| 毛片一区二区三区| 欧美一区激情| 一区二区三区色| 在线日韩中文| 国产一区二区黄| 国产精品高潮久久| 欧美高清视频在线播放| 久久av老司机精品网站导航| 亚洲午夜精品久久久久久浪潮| 亚洲高清免费在线| 久久夜色精品国产欧美乱| 亚洲欧美韩国| 一本色道久久综合亚洲精品婷婷| 一区二区视频在线观看| 国产精品五区| 国产精品盗摄久久久| 欧美精品三级| 免费成人性网站| 久久久综合香蕉尹人综合网| 亚洲欧美日韩精品综合在线观看| 亚洲精品黄色| 亚洲国产成人tv| 一区二区免费在线观看| 亚洲精品视频二区| 免费成人性网站| 久久精品国产久精国产一老狼| 亚洲桃色在线一区| 一区二区欧美日韩视频| 亚洲精品一区二区三区四区高清| 亚洲电影免费观看高清完整版| 国产亚洲一区二区在线观看| 国产日产欧美a一级在线| 国产精品日韩欧美大师| 国产精品免费福利| 欧美午夜视频在线观看| 欧美性片在线观看| 国产精品高潮呻吟久久av无限| 欧美小视频在线| 国产精品久久久久久av福利软件 | 亚洲精品一二三区| 日韩亚洲视频| 一本一本久久a久久精品综合妖精| 亚洲毛片av| 亚洲一区二区三区午夜| 亚洲欧美自拍偷拍| 久久高清国产| 欧美国产成人在线| 欧美视频中文字幕| 国产欧美在线| 1769国内精品视频在线播放| 亚洲人成在线播放| 在线一区日本视频| 欧美在线播放一区二区| 老**午夜毛片一区二区三区| 欧美激情久久久久| 一本色道久久综合亚洲二区三区| 亚洲一区二区在线免费观看| 久久久国产一区二区| 欧美福利视频在线| 国产精品爽爽ⅴa在线观看| 国产一区二区高清不卡| 亚洲免费大片| 久久av一区二区三区| 欧美激情精品久久久| 亚洲视频在线播放| 久久久亚洲精品一区二区三区 | 国产精品ⅴa在线观看h| 国产日韩欧美在线一区| 亚洲精品久久久久久久久久久久| 亚洲永久免费精品| 欧美mv日韩mv国产网站app| 一本久久精品一区二区| 久久久www成人免费无遮挡大片| 免费观看欧美在线视频的网站| 国产精品黄色在线观看| 亚洲国产欧美日韩精品| 午夜精品视频在线观看一区二区 | 夜夜嗨av一区二区三区| 久久精品国产999大香线蕉| 亚洲三级视频在线观看| 欧美一区二区三区视频| 欧美日韩一区二区三区| 亚洲国产视频一区| 久久久久久久综合色一本| 一区二区不卡在线视频 午夜欧美不卡在 | 一区二区三区久久精品| 蘑菇福利视频一区播放|