# 【模板】快速幂||取余运算

## 题目描述

给你三个整数 $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}$。

#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;


int a,b,p,res=1,temp;
void qmi()//快速幂
{
    while(b)
    {
        if(b&1)res=1ll*res*a%p;
        a=1ll*a*a%p;
        b>>=1;//忘记进行改变b的数值 
    }
}
int main()
{
    scanf("%d%d%d",&a,&b,&p);
   
    int x=a;
    int y=b;
    qmi();
    cout<<x<<"^"<<y<<" mod "<<p<<"="<<res;
  
    return 0;
}

 

posted on 2022-07-16 17:51  浅唱\,,笑竹神易  阅读(41)  评论(0)    收藏  举报