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

简介: P1226 【模板】快速幂||取余运算

题目描述



给你三个整数  a,b,p,求 a^b modp。


输入格式



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


输出格式



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


输入输出样例



输入

2 10 9


输出  

2^10 mod 9=7


快速幂

快速幂原理. 快速幂算法的核心思想就是每一步都把指数分成两半,而相应的底数做平方运算。. 这样不仅能把非常大的指数给不断变小,所需要执行的循环次数也变小,而最后表示的结果却一直不会变。. 让我们先来看一个简单的例子:. 3^10=3*3*3*3*3*3*3*3*3*3. 3^10= (3*3)* (3*3)* (3*3)* (3*3)* (3*3) 3^10= (3*3)^5. 3^10=9^5. 9^5=(9^4)*(9^1).


题意,具体实现上代码吗,模板题;

#include<bits/stdc++.h>
using namespace std;
long long b,a,p,k,ans=1,c;
int main()
{
    scanf("%d%d%d",&b,&p,&k);
    a=b;c=p;
    while(p>0)
    {
        if(p&1)
            ans=ans*b%k;
        b=b*b%k;
        p=p>>1;
    }
    ans %= k;
    printf("%d^%d mod %d=%d",a,c,k,ans);
}


相关文章
|
7月前
整数的阶乘(英语:factorial)是所有小于及等于
整数的阶乘(英语:factorial)是所有小于及等于
|
6月前
|
算法 C语言
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
C语言----判断n是否是2的次方数,利用到按位与&,算法n&(n-1)
|
6月前
|
数据安全/隐私保护
微机原理||十进制输入、数组中负数个数、字符串比较程序
微机原理||十进制输入、数组中负数个数、字符串比较程序
|
7月前
|
C语言
C语言之九九乘法表||素数||最小公倍数
C语言之九九乘法表||素数||最小公倍数
71 0
|
7月前
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
分解质因数答疑 为什么只需要枚举到根号N 为什么n % i == 0就是质数
64 0
|
7月前
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
leetcode-372:超级次方(快速幂的实现以及取余的规则和推导)
48 0
判断一个数字是否是回文数||取整与取余
判断一个数字是否是回文数||取整与取余
85 0
|
算法
不使用+或-运算符,计算两数之和
不使用+或-运算符,计算两数之和
87 0
【模板】快速幂||取余运算
【模板】快速幂||取余运算
93 0