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

風雨

驀然回首 卻在燈火闌珊處
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>
            欧美精品尤物在线| 欧美区一区二| 黄色精品一区| 麻豆av一区二区三区| 久久精品欧美| 亚洲激情在线激情| 欧美黑人多人双交| 欧美暴力喷水在线| 99精品国产在热久久| 99riav1国产精品视频| 国产精品久久福利| 久久久久久有精品国产| 久久琪琪电影院| 99精品热6080yy久久| 在线视频中文亚洲| 韩日精品在线| 亚洲人www| 国产精品久久久久婷婷| 美日韩丰满少妇在线观看| 久久久久久夜| 久热精品视频在线观看一区| 欧美日韩视频一区二区| 久久资源在线| 国产精品看片你懂得| 一区二区高清| 久久av一区二区三区漫画| 亚洲国产精品va在线看黑人动漫| 欧美激情一区二区三区高清视频| 欧美日韩亚洲国产精品| 久久免费视频在线观看| 欧美精品一区二区三区在线播放 | 欧美电影在线播放| 亚洲愉拍自拍另类高清精品| 欧美一区二区三区久久精品| 亚洲免费电影在线| 久久爱另类一区二区小说| 99在线观看免费视频精品观看| 亚洲一区亚洲| 一区二区三区.www| 久久夜色撩人精品| 久久精品国产91精品亚洲| 欧美激情视频一区二区三区免费 | 欧美国产一区二区| 久久爱www久久做| 欧美日韩精品在线播放| 免费看成人av| 国产自产女人91一区在线观看| 久久国产精品72免费观看| 欧美激情综合色| 奶水喷射视频一区| 国产性天天综合网| 亚洲综合导航| 亚洲欧美三级在线| 欧美日韩黄色大片| 最新国产乱人伦偷精品免费网站| 国语自产精品视频在线看一大j8 | 国产视频一区二区在线观看 | 亚洲精品一区二区三区不| 精品不卡一区| 欧美一区二区精品在线| 亚洲女同精品视频| 欧美色精品天天在线观看视频| 亚洲激情在线激情| 日韩亚洲一区在线播放| 欧美激情精品久久久久久大尺度| 欧美成人精品一区| 91久久精品美女高潮| 久久午夜电影网| 你懂的国产精品永久在线| 在线观看不卡| 麻豆91精品91久久久的内涵| 老牛嫩草一区二区三区日本| 精品69视频一区二区三区| 久久激情视频久久| 欧美不卡视频一区发布| 亚洲精品一区二区在线| 欧美噜噜久久久xxx| 日韩一级黄色av| 性做久久久久久免费观看欧美| 国产欧美1区2区3区| 欧美在线观看视频一区二区三区| 久久久精品视频成人| 在线不卡免费欧美| 欧美1区视频| 9久re热视频在线精品| 性欧美精品高清| 激情视频一区二区| 欧美成人r级一区二区三区| 99re6热在线精品视频播放速度| 亚洲午夜视频| 国产一区二区欧美日韩| 99精品视频免费在线观看| 午夜精品久久久久久久99樱桃| 国产日韩欧美不卡在线| 蜜臀久久99精品久久久画质超高清 | 国产一区二区三区高清| 免费成人av| 一区二区三区欧美成人| 久久久中精品2020中文| 亚洲精品一区二区三区四区高清| 国产精品成人av性教育| 欧美在线播放一区二区| 亚洲精品久久嫩草网站秘色| 午夜精品久久久久久久蜜桃app | 男同欧美伦乱| 亚洲午夜激情网站| 男女视频一区二区| 亚洲欧美一区二区三区在线| 伊人成人在线视频| 国产精品视频一区二区三区| 亚洲美女视频在线观看| 久久九九热re6这里有精品 | 国产欧美在线| 欧美激情亚洲视频| 久久av一区二区三区漫画| 亚洲精品美女在线| 美日韩在线观看| 欧美一区二区高清| 亚洲视频在线观看| 亚洲国产高清一区二区三区| 国产欧美日韩免费看aⅴ视频| 欧美成人性网| 久久九九国产精品| 亚洲欧美日韩在线播放| av不卡在线| 亚洲三级性片| 亚洲国产欧美久久| 免费成人美女女| 久久久久久久久一区二区| 亚洲一区二区高清| 国产精品99久久99久久久二8| 亚洲国产成人一区| 亚洲福利视频一区二区| 黄色成人在线免费| 黄色成人免费网站| 韩国av一区二区三区| 国产午夜精品久久久久久久| 国产精品萝li| 国产精品久久久久999| 欧美日韩综合| 欧美午夜无遮挡| 欧美日韩亚洲一区二区三区在线观看| 久久综合色88| 免费亚洲一区二区| 蜜臀久久久99精品久久久久久| 久久亚洲风情| 蜜臀av性久久久久蜜臀aⅴ四虎| 久久久亚洲人| 久久综合亚洲社区| 欧美成人在线影院| 欧美日本视频在线| 国产精品久久久对白| 国产精品乱码| 韩国久久久久| 亚洲国产99精品国自产| 亚洲区一区二| 一本一本久久a久久精品综合妖精| 夜夜嗨av一区二区三区四区 | 狠狠色伊人亚洲综合网站色| 红桃视频一区| 亚洲精品国产精品国自产在线 | 亚洲黄色精品| 一区二区三区国产| 亚洲欧美激情一区| 久久人91精品久久久久久不卡| 免费看亚洲片| 亚洲免费观看高清在线观看| 亚洲夜间福利| 久久理论片午夜琪琪电影网| 免费亚洲网站| 国产精品高精视频免费| 韩国一区二区三区在线观看| 亚洲国产精品成人久久综合一区| 91久久精品一区二区别| 亚洲欧美国内爽妇网| 久久综合导航| 亚洲清纯自拍| 午夜老司机精品| 欧美国产激情二区三区| 国产精品国产自产拍高清av| 一区二区在线视频| 中文欧美在线视频| 久久麻豆一区二区| 一区二区三区福利| 久久先锋影音av| 国产精品久久999| 亚洲国产片色| 欧美一区二区在线免费播放| 欧美国产一区二区在线观看| 亚洲网站视频| 欧美福利一区二区| 国产亚洲在线观看| 在线性视频日韩欧美| 免播放器亚洲| 亚洲制服av| 欧美日韩999| 亚洲国产日韩精品| 久久九九精品99国产精品| 一本色道久久综合亚洲精品不卡 | 午夜一级在线看亚洲|