簡體   English   中英

求大數除法的模

[英]Find the modulo of division of very big numbers

我必須找到這些數字的除法模:

239 ^(10 ^ 9)和10 ^ 9 + 13

239 ^(10 ^ 9)和10 ^ 9 + 15

...依此類推直至1001;

僅在c ++中使用本機庫。 怎么做? 如您所見,第一個數字約為30億個符號。

我試圖找到模周期的長度,但是它們的糊糊時間要長於10,甚至是unsigned long long int也無法處理這么大的數字(239 ^ 10)。 我也認為“大數字”算法(將數字存儲為數組)對我也不起作用(500 * 10 ^ 9),這是太多的操作。

順便說一句,這應該工作少於5個小時。

我們知道:

(A*B) % MOD = ((A % MOD) * (B % MOD)) % MOD

所以

(A^n) % MOD = (((A ^ (n/2)) % MOD) * ((A ^ (n/2)) % MOD)) % MOD;

我們可以遞歸地做到這一點。

因此,這是我們的功能:

int cal(int pow, int val, int MOD){
   if(pow == 0)
      return 1;
   int v = cal(pow/2, val, MOD);
   if(pow % 2 == 0)
      return (v*v) % MOD; 
   else
      return (((v*val) % MOD) * v) % MOD;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM