.快速幂.

按位与(Bitwise AND)是一种二进制运算,它逐位对两个数的二进制表示进行运算。对于每一位,只有两个相应的位都为1时,结果位才为1;否则,结果位为0。如:十进制9 & 5转化为二进制:(1001)&(0101)=0001。

>> <<

  • 左移(<<:将一个无符号整数左移n位,相当于将该数乘以2n。这是因为每向左移动一位,就相当于在数的末尾添加了一个0(在二进制表示中),这等价于乘以2。

  • 右移(>>:将一个无符号整数右移n位,相当于将该数除以2n并向下取整。这是因为每向右移动一位,就相当于去掉了数末尾的一个0(或更准确地说,是将数除以2并丢弃余数),这等价于除以2.
    无符号代表没有溢出,如果有符号为int,则可能会爆int

快速幂:快速的求出一个幂mod一个数的值
假设


 

题目:875. 快速幂 - AcWing题库 

代码:

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

typedef long long LL;

int n;

int quick_mi(int a,int b,int p)
{
    LL res=1%p;
    while(b)
    {
        //将b转化为2进制时按位与1,当b=0时,结束快速幂
        if(b&1) res=res*a%p;
        //舍弃b在二进制下的最后一位
        b = b >> 1;
        //上一个a^2%p
        a=(LL)a*a%p;
    }
    
    return res;
}

int main()
{
    scanf("%d",&n);
    
    while(n--)
    {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        
        printf("%d\n",quick_mi(a,b,c));
    }
    
    return 0;
}

题目:876. 快速幂求逆元 - AcWing题库

 题目即是要求:b^(m-2)。

证明:
由若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得 a/b≡a*x(mod m),则称 x 为 b 的模 m 乘法逆元,记为 b^(-1)(mod m)。等式两端约去a,得1/b≡b^(-1)(mod m)➡等式两端同时乘以b,得1≡b^(-1)*b(mod m)。也就是b*b^(-1)≡1(mod m),因为b与m互质,且m为质数,由费马小定理可得b^(m-1)≡1(mod m),也就是b*b^(m-1)≡1(mod m),所以b^(m−2) 即为 b的乘法逆元

代码:

#include<iostream>
#include<cstring>
#include<algorithm>

using namespace std;

typedef long long LL;
int n;

int quick_mi(int a,int b,int p)
{
    LL res=1;
    while(b)
    {
        if(b&1) res=res*a%p;
        a=(LL)a*a%p;
        b>>=1;
    }
    
    return res;
}

int main()
{
    scanf("%d",&n);
    while(n--)
    {
        int a,b;
        scanf("%d%d",&a,&b);
        int t=quick_mi(a,b-2,b);
//特判一下,只有当a与b互质时才成立
        if(a%b) printf("%d\n",t);
        else printf("impossible\n");
    }
    
    return 0;
    
}

 

相关推荐

  1. 快速 FastPower

    2024-07-14 12:34:05       62 阅读
  2. 【算法】数论---快速

    2024-07-14 12:34:05       57 阅读
  3. 【数论】矩阵快速

    2024-07-14 12:34:05       45 阅读
  4. 快速算法详解

    2024-07-14 12:34:05       39 阅读
  5. P1226 快速

    2024-07-14 12:34:05       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-14 12:34:05       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-14 12:34:05       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-14 12:34:05       57 阅读
  4. Python语言-面向对象

    2024-07-14 12:34:05       68 阅读

热门阅读

  1. 详解 QAxObject

    2024-07-14 12:34:05       11 阅读
  2. windos安装qemu启动树莓派2b连接网卡和openssh-server

    2024-07-14 12:34:05       18 阅读
  3. ARM/Linux嵌入式面经(十五):中科曙光

    2024-07-14 12:34:05       19 阅读
  4. C++ 中的返回值优化

    2024-07-14 12:34:05       20 阅读
  5. 2024/7/14 英语每日一段

    2024-07-14 12:34:05       19 阅读
  6. Python爬虫教程第一篇

    2024-07-14 12:34:05       24 阅读
  7. 使用druid对sql进行血缘解析

    2024-07-14 12:34:05       24 阅读
  8. Spring Boot项目的控制器貌似只能get不能post问题

    2024-07-14 12:34:05       32 阅读
  9. Django是干什么的?好用么?

    2024-07-14 12:34:05       25 阅读
  10. HTTPS 加密流程全解析

    2024-07-14 12:34:05       26 阅读
  11. mysql快速精通(四)多表查询

    2024-07-14 12:34:05       23 阅读