3.2. Szybkie potęgowanie modularne
Pokaż odpowiedź i ocenianie CKE
Odpowiedź CKE
1) Rozwiązanie w pseudojęzyku, używające rekursji:
funkcja potęga(a, x, M)
jeżeli x = 0
wynik 1
jeśli x mod 2 == 0:
w = potęga(a, x/2)
wynik w*w mod M
jeśli x mod 2 == 1:
w = potęga(a, (x-1)/2)
zwróć wynik a*w*w mod M
2) Rozwiązanie w C++, metodą iteracyjną:
int potega(int a, int x, int M)
{
int w = 1;
int z = a;
while(x>0)
{
if (x%2==1)
w = w*z%M;
z = z*z%M;
x = x/2;
}
return w;
}
Zasady oceniania CKE
4 pkt – za poprawny algorytm, w tym:
3 pkt – za poprawne obliczenie potęgi ax (w tym 1 punkt za warunki początkowe oraz 2 punkty za poprawną konstrukcję pętli z uwzględnieniem parzystości x)
1 pkt – za zwrócenie poprawnego wyniku.
2 pkt – za poprawny algorytm o złożoności większej niż logarytmiczna.
0 pkt – za podanie odpowiedzi niepoprawnej lub niepełnej albo brak odpowiedzi.
Źródło
Oryginalne zasady oceniania CKE — PDF, strona 7Potrzebujesz pomocy w przygotowaniu do matury?
Zobacz korepetycje