当前位置: 代码迷 >> 综合 >> 51NOD 1046 快速幂取模
  详细解决方案

51NOD 1046 快速幂取模

热度:50   发布时间:2023-12-13 04:06:23.0

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;
}