From 0ef181c0ccb54c049b893dcd61777b9c459d6580 Mon Sep 17 00:00:00 2001 From: Bhavya M Modi <83846197+bhavyammodi@users.noreply.github.com> Date: Fri, 22 Oct 2021 01:20:55 +0530 Subject: [PATCH] Create fermats_little_theorem.cpp --- Number Theory/fermats_little_theorem.cpp | 38 ++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Number Theory/fermats_little_theorem.cpp diff --git a/Number Theory/fermats_little_theorem.cpp b/Number Theory/fermats_little_theorem.cpp new file mode 100644 index 0000000..afa079a --- /dev/null +++ b/Number Theory/fermats_little_theorem.cpp @@ -0,0 +1,38 @@ + +#include +#define ll long long int +// Compute (A^B)%mod +using namespace std; +ll power(ll a, ll b, ll mod) +{ + if (b == 0) + return 1; + ll ans = power(a, b / 2, mod); + ans %= mod; + ans = (ans * ans) % mod; + if ((b & 1) == 1) + return (ans * a) % mod; + return ans % mod; +} +ll stoi(string a, ll mod) +{ + ll ans = 0; + for (size_t i = 0; i < a.length(); i++) + ans = ((ans * 10) % mod + a[i] - '0') % mod; + return ans; +} +int main() +{ + ll n, m, mod = 1000000007; + ll t; + cin >> t; + string a, b; + while (t--) + { + cin >> a >> b; + n = stoi(a, mod); + m = stoi(b, mod - 1); // using fermats little theorem + cout << power(n, m, mod) << endl; + } + return 0; +}