rt,今天突发奇想用递归写,然而WA掉了。。。
先用的unsigned int,WA了之后改成long long了,然而还是一样。。。
#include <iostream>
using namespace std;
long long qpow(long long x, long long y, long long mod)
{
if (y == 0) return 1;
if (y == 1) return x % mod;
long long cnt = (qpow(x, y / 2, mod) % mod) % mod;
if (y % 2 == 0) return (cnt % mod) * (cnt % mod) % mod;
else return (x % mod) * (cnt % mod) * (cnt % mod) % mod;
}
int main()
{
long long a, b, p;
cin >> a >> b >> p;
cout << a << "^" << b << " mod " << p << "=" << (qpow(a, b, p) % p);
return 0;
}