Diferente pentru preoni-2006/runda-4/solutii intre reviziile #18 si #19

Nu exista diferente intre titluri.

Diferente intre continut:

Deoarece se cer doar ultimele $C$ cifre se va lucra modulo $10^C^$. Asadar, la primul pas se va calcula $A$ modulo $10^C^$, adica ne intereseaza doar ultimele $C$ cifre din $A$.
O prima solutie pentru a calcula $A^1^ + A^2^ + ... + A^B^$ este de calcula $A^i^$ in $O(lg i)$ pentru fiecare $i$ folosind algoritmul clasic de ridicare la o putere in numar logaritmic de pasi (Cormen, capitolul 33). Aceasta solutie ar fi adus doar $20p$.
Suma prezentata este o progresie geometrica clasica, si se poate calcula folosind formula $(A^B+1^-A) / (A-1)$. Calculul lui $A^(B+1)^$ se face folosind acelasi algoritm mentionat mai sus in $O(lg B)$ ({$lg$} = logaritm in baza 2). Pentru a efectua impartirea modulo $10^C^$, trebuie sa existe un invers multiplicativ pentru $A-1$ , modulo $10^C^$, lucru garantat doar pentru $50%$ din teste $(cmmdc(A-1, 10^C^) = 1)$. Inversul multiplicativ poate fi calculat folosind algoritmul Euclid extins sau teorema lui Fermat: $X^phi(N)^ = 1 (mod N)$ pentru $cmmdc(X, N) = 1$ si $phi(N)$ = indicatorul lui Euler, cate numere < $N$ sunt prime cu $N$. Din teorema reiese ca $X^phi(N)-1^ = X^-1^ (mod N)$, asadar inversul poate fi calculat algoritmul de ridicare la o putere mentionat mai sus ($phi(10^C^)$ poate fi calculat usor). Un caz special la aceasta solutie apare atunci cand $A = 1$. Aceasta solutie n-ar fi adus decat $50p$ si necesita cunostiinte de matematica de clasa a 12-a.
Suma prezentata este o progresie geometrica clasica, si se poate calcula folosind formula $(A^B+1^-A) / (A-1)$. Calculul lui $A^(B+1)^$ se face folosind acelasi algoritm mentionat mai sus in $O(lg B)$ ({$lg$} = logaritm in baza 2). Pentru a efectua impartirea modulo $10^C^$, trebuie sa existe un invers multiplicativ pentru $A-1$ , modulo $10^C^$, lucru garantat doar pentru $50%$ din teste $(cmmdc(A-1, 10^C^) = 1)$. Inversul multiplicativ poate fi calculat folosind algoritmul Euclid extins sau teorema lui Fermat: $X^phi(N)^ = 1 (mod N)$ pentru $cmmdc(X, N) = 1$ si $phi(N)$ = indicatorul lui Euler, cate numere < $N$ sunt prime cu $N$. Din teorema reiese ca $X^phi(N)-1^ = X^-1^ (mod N)$, asadar inversul poate fi calculat algoritmul de ridicare la o putere mentionat mai sus ({$phi(10^C^)$} poate fi calculat usor). Un caz special la aceasta solutie apare atunci cand $A = 1$. Aceasta solutie n-ar fi adus decat $50p$ si necesita cunostiinte de matematica de clasa a 12-a.
Exista o solutie mult mai accesibila pentru clasele a 10-a si a 11-a, folosind
relatiile:

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.