如何求数和的模
How to find modulo of a sum of numbers?
我正在寻找一种方法来找到一系列数字的模,比如:(a1+a2+a3+a4+…+an)mod x
有没有模函数的任何方法/性质,这样我就可以从序列中数字的各个模中计算出这个序列的模。
我记得。你可以:
(a1 mod x + a2 mod x + a3 mod x + ... + an mod x) mod x
这样的等式有利于一个目的。如果数字之和超过用于求和的变量的容量。例如32位内部
这样,很可能模的和将适合用于求和的var。取决于x值和序列长度。
样本代码
int sum = 0;
for (int i=0;i<n;i++)
sum += a[i] % x;
int mod = sum % x;
更好的方法(不太确定)
int sum = 0;
for (int i=0;i<n;i++) {
sum += a[i] % x;
sum %= x;
}
int mod = sum;
Mod运算符是分布式的;
( x + y ) % z
相当于:
( x % z + y % z ) % z
由于这样做的目的通常是避免溢出,以下内容可能仍然溢出,因为我们正在对所有mod值求和。
如果我们想避免溢出,错误的方法:
(a1 mod x + a2 mod x + a3 mod x + ... + an mod x) mod x
我们需要在每次求和之后进行mod。
假设ai<x、
((((a1 + a2) mod x) + a3) mod x) + a4) mod x ....
应避免溢出。
相关文章:
- 使用 stbi_write_png,如何将 0 和 1 的矩形字节数组转换为单色 png 文件?
- 如何在 c++ 中格式化和访问 2D 矢量数组中的数据
- 使用 GDAL 获取矢量数组中的所有行数和列数
- 这种用于查找连续子数组中最大和的递归算法有什么优势吗?
- 如何有效地找到数组中三元组和的最小差异?
- 在 C++ 中使用带有十六进制十进制和八进制数的 unsetf
- 如何在 C++ 中将从文本文件中读取的元素推送和弹出到数组中,并按 Revserse 顺序输出堆栈?
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- sizeof(空结构)和sizeof(带有空数组的结构)之间的区别?
- 在 C++ 的二维数组中添加行和列
- 如何发送(和接收)从 Swift 到 Objective c++ 再到 c++,然后备份到 Swift 的超大型浮动数组
- 初始化的多维数组,用声明初始化和声明后初始化有什么区别
- 如何创建用于存储和返回浮点数数组的结构
- 求数组中三元组 (i, j, k) 的数量,使得 A[i] + A[j] = 2 * A[k]
- 在这里,我编写了一个使用 2 维数组并打算执行行和的 C++ 代码,但它没有给出正确的输出
- 如何使用二维数组来计算和存储来自其他数组的值的频率
- 如何求数组中奇数元素的和和和偶数元素的乘
- C++ 和 Java 之间的表达式求值顺序有何不同
- 如何求数和的模
- 查找具有最大和的连续子数组