c++ - 如何找到大数乘法模 100000007

标签 c++ c math

众所周知,1000000007 是一个大质数。 我怎样才能找到两个大数模 1000000007 的乘法

例如,如果我想找到 78627765*67527574 mod 1000000007,我该怎么做。

至少如果有人告诉我我会尝试的程序

注意:请告诉我原始数据类型如 int、long 或 long long 的解决方案 提前致谢

最佳答案

模链与合理的数字一起工作,这些数字正在插入您的数字计算空间的极限:

(A * B) % C == ((A % C) * (B % C)) % C.

这方面的证明非常简单,全世界的密码学网站上都有数以千计的例子。一个简单的示例:

(7 * 8) % 5 = 56 % 5 = 1

((7 % 5) * (8 % 5)) % 5 = (2 * 3) % 5 = 6 % 5 = 1

希望对您有所帮助。显然,当 A 和 B 已经被推到您的高端平台限制并且仍然小于 C 时,它变得毫无意义,但如果不是这种情况(即当 A > C 和/或 B > C ).

关于c++ - 如何找到大数乘法模 100000007,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12235008/

相关文章:

c - 二进制搜索单词词典

c - C 中 main 函数的返回类型作为字符返回类型

math - Monad 有什么特别之处?

java - 除法问题

c++ - 为什么 VS2017 会警告 "Function definition not found"对于使用输入 typedef 声明但使用原始定义的函数向前?

c++ - 删除未引用的动态内存

c++ - 无法将参数 2 从 'std::string *' 转换为 'std::string'

c++ - 将 typedef 用于 unique_ptr 模板

CS50 PS 1 贪婪

javascript - 滚动时根据线性渐变背景设置适当的元素颜色