我正在寻找一种方法来找到一系列数字的模数,如:(a1 + a2 + a3 + a4 + ... + an)mod x
是否存在模数函数的任何方式/属性,以便我可以从序列中的各个数字mod计算此序列的mod.
Mod 运算符是分布式的;
( x + y ) % z
Run Code Online (Sandbox Code Playgroud)
...相当于:
( x % z + y % z ) % z
Run Code Online (Sandbox Code Playgroud)
我记得.您可以:
(a1 mod x + a2 mod x + a3 mod x + ... + an mod x) mod x
Run Code Online (Sandbox Code Playgroud)
这样的等式将有益于一个目的.如果数字的总和超过用于求和的变量的容量.恩.32位整数.
这样,很可能模数的总和将适合用于求和的变量.取决于x值和序列长度.
示例代码
int sum = 0;
for (int i=0;i<n;i++)
sum += a[i] % x;
int mod = sum % x;
Run Code Online (Sandbox Code Playgroud)
更好的方法(不太确定)
int sum = 0;
for (int i=0;i<n;i++) {
sum += a[i] % x;
sum %= x;
}
int mod = sum;
Run Code Online (Sandbox Code Playgroud)