我被困在其中,我需要計算類似的問題:在國防部需要幫助1000000007
(!!(500)/(20×20×20×20 ...)!)MOD 1000000007
我明白如何計算500!%1000000007,但我不確定如何在分配中分配該運算符。
我目前正在嘗試編寫一個代碼,以分子的因子取消分母。但我不確定這是否是一個好方法。
我只需要一種解決這些問題的數學方法(mod1000000007),因爲它們在編程競賽中經常遇到,並且會幫助我準備Google Code Jam。
我被困在其中,我需要計算類似的問題:在國防部需要幫助1000000007
(!!(500)/(20×20×20×20 ...)!)MOD 1000000007
我明白如何計算500!%1000000007,但我不確定如何在分配中分配該運算符。
我目前正在嘗試編寫一個代碼,以分子的因子取消分母。但我不確定這是否是一個好方法。
我只需要一種解決這些問題的數學方法(mod1000000007),因爲它們在編程競賽中經常遇到,並且會幫助我準備Google Code Jam。
方法1:
想想你將如何計算500!/(20! * 20! * 20! * ...)
正常。
不要把所有東西放在一起並在最後分開。在中間做你的部門。然後將其與上一個問題的模量降低結合起來。
方法2:
Prime factorize500!
和20!
。然後從500!
的素數中扣除20! * 20! * 20!
(或其中多數人)的素數因子。
然後通過將其餘的因子相乘來重建數字。 (同時服用模量一路保持數越來越大)
方法3:
如果1000000007
(或任何模量)爲素數,則可以使用modular inverse師做。
計算20! mod 1000000007
。然後計算它的模逆,並將其乘以500! mod 1000000007
。
非常感謝。 Method3有很多幫助。你能不能爲我提出一本好書來提高我的數學技能,這對於編程而言是必不可少的,否則難以解決。 – daerty0153 2012-02-09 23:30:39
我不看書。我使用谷歌和維基百科。你偶然發現的這個數學題目叫做「數論」。但這是一個非常大的話題,沒有一本書可以涵蓋。您也可以嘗試搜索「模塊化算術」。 – Mysticial 2012-02-09 23:33:25
'(x/y)mod z'甚至意味着什麼?它是:「找到一個數字,如果乘以'y',將等於(mod'z')到'x'?」 – 2012-02-09 23:21:35
http://stackoverflow.com/questions/9169167/need-help-in-mod-1000000007-questions – nikhil 2012-07-02 14:36:23