繁体   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