您的位置:首页 > 其它

51NOD 1046 快速幂取模

2017-02-03 21:49 393 查看

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: