2014-10-12 6 views
5

Ich bin für einen Weg suchen finden Modulo einer Folge von Zahlen wie: so (a1 + a2 + a3 + a4 + ... + an) mod xWie findet man Modulo einer Zahlensumme?

Gibt es eine Möglichkeit/Eigentum der Modulo-Funktion dass ich Mod dieser Sequenz aus den einzelnen Mods von Zahlen in Folge berechnen kann.

+11

Sie wissen, dass (a + b)% x == ((a% x) + (b% x))% x, oder? –

+0

Ich habe genau die gleiche Frage. Hast du deine Antwort gefunden? –

Antwort

2

Mod-Operator ist distributiv;

(x + y) % z 

... entspricht:

(x % z + y % z) % z 
+0

entspricht (x% z + y% z)% z – hasan83

5

Wie ich mich erinnern kann. Sie können:

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

Eine solche Gleichung wird einen Zweck nutzen. wenn die Summe der Zahlen die Kapazität der für die Summierung verwendeten Variablen übersteigt. Ex. 32 Bit int.

Auf diese Weise wird wahrscheinlich die Summe der Modulare in die verwendete var für die Summierung passen. abhängig von x-Wert und Sequenzlänge.

Beispielcode

int sum = 0; 
for (int i=0;i<n;i++) 
    sum += a[i] % x; 
int mod = sum % x; 

besserer Ansatz (nicht ganz sicher)

int sum = 0; 
for (int i=0;i<n;i++) { 
    sum += a[i] % x; 
    sum %= x; 
} 
int mod = sum; 
-3

$ \ sum_ {i = 1}^{N} \ left (i \% m \ right) = \ text {int} \ links (\ frac {N} {m} \ rechts) \ cdot \ left (\ sum_ {i = 1}^{m-1} i \ rechts) + \ sum_ {i = 1}^{N \% m} i = \ Text {int} \ links (\ frac {N} {m} \ rechts) \ cdot \ frac {(m-1) \ cdot m} {2} + \ Frac {N \% m \ cdot (N \% m + 1)} {2} $