c++ - c中大数相乘

标签 c++ c

我有两个整数 x 和 y 假设 x= 10^5 且 y = 10^8 现在我必须将数字相乘并将它们存储在变量 z 中。我不需要确切的值。 z 可以得到对 100000009 取模的答案。我该怎么做?

提前致谢

最佳答案

一般来说,您应该依赖这种关系:

(a * b) % n = (a % n) * (b % n) % n

在这种特殊情况下,它没有多大帮助,因为您的 ab都小于 n ,但对于更大的 ab这保证了您需要处理的最大乘法的数量级为 n^2而不是a * b .

在 64 位系统上,您的当前值为 n^2适合 long 内。如果您预计会有更大的值,那么您将需要一个任意精度的数学库,例如 GMP .

关于c++ - c中大数相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234113/

相关文章:

c++ - 这个算术表达式是什么意思 : A += B++ == 0 in C++;

c++ - 为 future 的 'unset' 变量定义一个外部变量是一种好习惯吗?

c++ - ublas:将 ublas::vector 包装为 ublas::matrix_expression

c - 用指针定义结构

c - 为什么我的程序结合了两个 printf 命令?

c++ - Windows 服务生成的进程运行速度比 GUI 生成的进程慢 3 到 4 倍

c++ - 如何保存 lambda 以供以后回调?

c - 当此代码中数组大小未初始化时,为什么 gcc o 不发出警告?

控制台输出未对齐

我可以创建一个存储数据的结构并通过 MPI 发送它吗?