Description
给出3个正整数A B C,求A^B Mod C。
例如,3 5 8,3^5 Mod 8 = 3。
Input
3个正整数A B C,中间用空格分隔。(1 <= A,B,C <= 10^9)
Output
输出计算结果
Input示例
3 5 8
Output示例
3
看了好久,牵扯到什么离散数学,数分的知识,也不怎么理解记住吧。
推荐一篇有关快速幂很赞的博文:各种姿势求快速幂
#include <cstdio>
#include <iostream>
using namespace std;int PowerMod(long long a, long long b, long long c);
int main()
{long long a, b, c;//10^9小心爆掉scanf("%lld%lld%lld", &a, &b, &c);printf("%lld\n", PowerMod(a, b, c));return 0;
}
int PowerMod(long long a, long long b, long long c)
{long long ans = 1;a = a % c;while(b > 0){if(b % 2 == 1){ans = (ans * a) % c;}b /= 2;a = (a * a) % c;}return ans;
}