Alqoritm Analizi
-i hesablamaq üçün aşağıdakı formuldan istifadə edəcəyik:
əgər cüt rəqəmdir, və , əgər təkdir.
Alqoritm İmplementasiyası
powmod
funksiyası dəyərini hesablayır.
long long powmod(long long x, long long n, long long m) { if (n == 0) return 1; if (n % 2 == 0) return powmod((x * x) % m, n / 2, m); return (x * powmod(x, n - 1, m)) % m; }
Proqramın əsas hissəsi. Giriş məlumatlarını oxumaq.
scanf("%lld %lld %lld", &x, &n, &m);
dəyərini hesablamaq.
res = powmod(x, n, m);
Cavabı çap etmək.
printf("%lld\n", res);
Java İmplementasiyası
import java.util.*; public class Main { static long PowMod(long x, long n, long m) { if (n == 0) return 1; if (n % 2 == 0) return PowMod((x * x) % m, n / 2, m); return (x * PowMod(x, n - 1, m)) % m; } public static void main(String[] args) { Scanner con = new Scanner(System.in); long x = con.nextLong(); long n = con.nextLong(); long m = con.nextLong(); long res = PowMod(x, n, m); System.out.println(res); con.close(); } }
Java İmplementasiyası – BigInteger
import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner con = new Scanner(System.in); BigInteger a = con.nextBigInteger(); BigInteger b = con.nextBigInteger(); BigInteger m = con.nextBigInteger(); System.out.println(a.modPow(b, m)); con.close(); } }
Python İmplementasiyası – pow
Giriş məlumatlarını oxumaq.
x, n, m = map(int, input().split())
Cavabı hesabla və çap et.
print(pow(x, n, m))
Python İmplementasiyası – rekurziya
myPow
funksiyası dəyərini hesablayır.
def myPow(x, n, m): if (n == 0): return 1 if (n % 2 == 0): return myPow((x * x) % m, n / 2, m) return (x * myPow(x, n - 1, m)) % m
Proqramın əsas hissəsi. Giriş məlumatlarını oxumaq.
x, n, m = map(int, input().split())
Cavabı hesabla və çap et.
print(myPow(x, n, m))