2014-10-12 16 views
5

Sto cercando un modo per trovare modulo di una sequenza di numeri come: (A1 + A2 + A3 + A4 + ... + a) mod xCome trovare il modulo di una somma di numeri?

Esiste un modo/di proprietà della funzione modulo così che posso calcolare mod di questa sequenza dalle singole mod di numeri in sequenza.

+11

Sai che (a + b)% x == ((a% x) + (b% x))% x, giusto? –

+0

Ho esattamente la stessa domanda. Hai trovato la tua risposta? –

risposta

2

L'operatore Mod è distribuito;

(x + y) % z 

... è equivalente a:

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

equivalente a (x% z + y% z)% z – hasan83

5

Come posso ricordare. è possibile:

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

Tale equazione andrà a beneficio di uno scopo. se la somma dei numeri supera la capacità della variabile utilizzata per la somma. ex. Int 32 bit

In questo modo è molto probabile che la somma di modulars si adatterà alla var utilizzata per la sommatoria. in base al valore x e alla lunghezza della sequenza.

codice di esempio

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

Meglio Approach (non molto sicuro)

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} \ left (\ frac {N} {m} \ right) \ cdot \ left (\ sum_ {i = 1}^{m-1} i \ destra) + \ sum_ {i = 1}^{N \% m} i = \ text {int} \ left (\ frac {N} {m} \ right) \ cdot \ frac {(m-1) \ cdot m} {2} + \ frac {N \% m \ cdot (N \% m + 1)} {2} $