输入b,p,k的值,求b^p mod k的值。其中b,p,k*k为长整型数。
三个整数b,p,k.
输出“b^p mod k=s”
s为运算结果
输入 #1
2 10 9输出 #1
2^10 mod 9=7例如3^405可以拆分为 (3 ^1) ^5 * ( 3^10 ) ^0 * (3 ^ 100) ^ 4.
/* @Author: Top_Spirit @Language: C++ */ #include <bits/stdc++.h> using namespace std ; typedef unsigned long long ull ; typedef long long ll ; const int Maxn = 1e3 + 10 ; const int INF = 0x3f3f3f3f ; const double PI = acos(-1.0) ; const ull seed = 133 ; const int MOD = 51123987 ; ll b, k, len ; string p; ll ans = 1 ; void solve(){ len = p.size() ; len-- ; ans = 1 ; ll base = b ; while (len >= 0){ ll cnt = p[len] - '0' ; ll Pow = base ; for (ll i = 1; i <= cnt; i++){ ans = ans * base % k ; } for (int i = 1; i < 10; i++){ Pow = Pow * base % k ; } base = Pow ; ans = ans % k ; len-- ; } cout << b << "^" << p << " mod " << k << "=" << ans << endl ; } int main (){ cin >> b >> p >> k ; solve() ; return 0 ; }