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

風雨

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

[轉(zhuǎn)載] Computing n choose k mod p

Posted on 2010-05-04 10:07 zgm 閱讀(590) 評論(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) + ...


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

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   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| 久久精品91| 亚洲国产91| 亚洲国产日韩一区二区| 另类激情亚洲| 亚洲国产欧美日韩精品| 亚洲国产视频直播| 欧美伦理影院| 亚洲欧美大片| 香蕉久久久久久久av网站| 国产欧美精品一区| 美女免费视频一区| 欧美精品电影| 亚洲欧美经典视频| 午夜在线一区二区| 在线成人免费观看| 亚洲激情女人| 国产精品国产三级国产aⅴ无密码| 欧美怡红院视频| 久久精品人人爽| 亚洲青涩在线| 中日韩男男gay无套| 国产一区二区三区四区在线观看| 久久亚洲综合色一区二区三区| 久久在线免费视频| 亚洲永久免费av| 久久福利电影| 亚洲精品国产精品久久清纯直播| 亚洲久久一区二区| 国产欧美在线观看| 亚洲激情av在线| 国产欧美在线观看一区| 亚洲国产精品高清久久久| 国产精品私拍pans大尺度在线 | 亚洲国产日韩欧美在线图片| 国产精品久久久久久久久久三级 | 欧美成人精品1314www| 欧美日本一区二区三区| 久久久99久久精品女同性| 欧美.日韩.国产.一区.二区| 亚洲欧美激情视频| 鲁鲁狠狠狠7777一区二区| 亚洲性夜色噜噜噜7777| 久久久视频精品| 亚洲综合日韩在线| 在线播放亚洲| 欧美激情第六页| 99这里只有精品| 久久激情五月丁香伊人| 一本到12不卡视频在线dvd| 亚洲午夜视频在线观看| 亚洲日本中文字幕免费在线不卡| 香蕉成人啪国产精品视频综合网| 99国产精品久久久| 久久午夜影视| 久久久噜噜噜久噜久久| 国产精品久久国产精品99gif | 亚洲精品中文在线| 精品粉嫩aⅴ一区二区三区四区| 99热这里只有成人精品国产| 一区二区亚洲精品| 亚洲一区二区三区四区中文 | 欧美福利视频在线| 国内一区二区三区在线视频| 亚洲香蕉网站| 亚洲天堂视频在线观看| 欧美久久电影| 亚洲国产精品一区二区第一页| 国产中文一区二区| 欧美亚洲三区| 久久成人精品视频| 国产麻豆精品theporn| 亚洲视频在线观看一区| 亚洲性线免费观看视频成熟| 欧美日韩黄色大片| 亚洲免费成人| 亚洲一级免费视频| 国产精品mv在线观看| 亚洲夜晚福利在线观看| 亚洲欧美日韩国产中文在线| 国产精品大全| 亚洲在线成人精品| 久久精品国产免费看久久精品| 国产一区二区日韩| 久久精品国产2020观看福利| 美乳少妇欧美精品| 亚洲精品日韩久久| 欧美日韩一区在线观看| 亚洲欧美成人网| 久热精品视频在线观看| 亚洲激情第一页| 欧美美女操人视频| 亚洲一区二区在线免费观看| 久久精品亚洲热| 亚洲福利视频二区| 欧美日韩成人一区二区三区| 日韩午夜av| 欧美亚洲一区在线| 狠狠色狠狠色综合日日91app| 久久夜色精品国产亚洲aⅴ| 亚洲三级电影在线观看 | 午夜精品亚洲| 美日韩精品视频| 一本大道久久a久久综合婷婷 | 亚洲女同精品视频| 国产在线精品一区二区夜色| 久久精品人人做人人爽| 久久手机免费观看| 欧美黄网免费在线观看| 亚洲午夜高清视频| 国产婷婷精品| 欧美jizzhd精品欧美巨大免费| 99亚洲一区二区| 久久全国免费视频| aa级大片欧美三级| 国产日韩欧美在线一区| 欧美成人激情视频| 亚洲欧美日韩综合aⅴ视频| 女女同性精品视频| 亚洲女人天堂av| 亚洲精品国产视频| 国产日韩一区欧美| 欧美日韩免费高清一区色橹橹| 久久精品盗摄| 亚洲影视九九影院在线观看| 亚洲国产欧美不卡在线观看| 久久成人免费电影| 一区二区电影免费在线观看| 国产综合亚洲精品一区二| 欧美日产在线观看| 开心色5月久久精品| 亚洲欧美日韩在线高清直播| 亚洲激情视频| 麻豆精品在线视频| 欧美一区亚洲二区| 亚洲少妇自拍| 亚洲欧洲午夜| 在线免费观看日本一区| 国产一区二区黄色| 国产精品一区在线观看| 欧美调教视频| 欧美久久综合| 免费欧美视频| 久久综合久久久久88| 久久不射中文字幕| 亚洲欧美日韩专区| 亚洲欧美激情精品一区二区| 9人人澡人人爽人人精品| 亚洲三级国产| 亚洲日韩欧美视频| 亚洲九九九在线观看| 亚洲精品国产精品久久清纯直播| 欧美不卡福利| 免费一级欧美片在线观看| 久久久伊人欧美| 久久久久久**毛片大全| 久久九九国产精品| 久久久99精品免费观看不卡| 久久黄色小说| 久久福利视频导航| 久久精品人人做人人爽| 久久精品人人爽| 久久免费精品视频| 欧美成人首页| 欧美激情中文字幕乱码免费| 欧美激情a∨在线视频播放| 欧美黄色片免费观看| 亚洲人午夜精品| 在线综合+亚洲+欧美中文字幕| 正在播放欧美一区| 欧美一区二区三区视频| 久久精品二区三区| 欧美成人激情视频| 欧美偷拍另类| 国产片一区二区| 极品尤物av久久免费看| 亚洲国产精品美女| 中文无字幕一区二区三区| 午夜国产精品视频免费体验区| 午夜视黄欧洲亚洲| 巨胸喷奶水www久久久免费动漫| 免费亚洲婷婷| 99re8这里有精品热视频免费| 亚洲一区二区免费| 久久青青草综合| 欧美电影免费| 午夜精品国产更新| 香港久久久电影|