如何找到一个数字的模数?

时间:2014-10-12 08:29:10

标签: c++ math modulo

我正在寻找一种方法来找到一系列数字的模数,如: (a1 + a2 + a3 + a4 + ... + an)mod x

是否存在模数函数的任何方式/属性,以便我可以从序列中的各个数字mod计算此序列的mod。

3 个答案:

答案 0 :(得分:6)

我记得。你可以:

(a1 mod x + a2 mod x + a3 mod x + ... + an mod x) mod x

这样的等式将有益于一个目的。如果数字的总和超过用于求和的变量的容量。恩。 32位int。

这种方式很可能模数的总和将适合用于求和的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;

答案 1 :(得分:2)

Mod运算符是分布式的;

( x + y ) % z

......相当于:

( x % z + y % z ) % z

答案 2 :(得分:-3)

$ \ sum_ {I = 1} ^ {N} \左(I \%米\右)= \文本{INT} \左(\压裂{N} {M} \右)\ CDOT \左( \ sum_ {I = 1} ^ {M-1} I \右)+ \ sum_ {I = 1} ^ {N \%米} I = \文本{INT} \左(\压裂{N} {M} \ right)\ cdot \ frac {(m-1)\ cdot m} {2} + \ frac {N \%m \ cdot(N \%m + 1)} {2} $

相关问题