洛谷笔记 - P1226 【模板】快速幂||取余运算

题目描述

给你三个整数 $a,b,p$,求 $a^b \bmod p$。

输入格式

输入只有一行三个整数,分别代表 $a,b,p$。

输出格式

输出一行一个字符串 a^b mod p=s,其中 $a,b,p$ 分别为题目给定的值, $s$ 为运算结果。

样例 #1

样例输入 #1

2 10 9

样例输出 #1

2^10 mod 9=7

提示

样例解释

$2^{10} = 1024$,$1024 \bmod 9 = 7$。

数据规模与约定

对于 $100\%$ 的数据,保证 $0\le a,b < 2^{31}$,$a+b>0$,$2 \leq p \lt 2^{31}$。

代码

//P1226 【模板】快速幂||取余运算
//https://www.luogu.com.cn/problem/P1226
//https://www.luogu.com.cn/record/83507119

#include<iostream>
using namespace std;
unsigned long long int ans,aa,bb;
int main(){
    int a,b,c;
    cin>>a>>b>>c;
    ans=1,aa=a,bb=b;
    while(bb!=0){
        if(bb%2==1){
            ans=(ans%c)*(aa%c)%c; //边除边模
        }
        aa=aa*aa%c;
        bb/=2;
    }
    printf("%d^%d mod %d=%d\n",a,b,c,ans); //这次应该是自己第一次用printf
    return 0;
}

参考文献:

1: 学委: 《快速幂和取余运算》, 2018-08-28

2: 龙啸空: 《题解 P1313 【计算系数】》, 2018-10-30

Just Programming With ♥️ & Peace
使用 Hugo 构建
主题 StackJimmy 设计