1 条题解

  • 1
    @ 2025-1-16 13:04:17
    #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%2!=0)
                ans=ans*b%k;//如果p为单数,乘到ans里面去,然后取模
            b=b*b%k;//每次运算都取模
            p=p>>1;    //用位运算除2,可能会快一点
        }
        ans %= k;//多年前的代码了……今天突然发现有大佬告知代码错误,仔细一看是在p = 0时没有取模,加上这句话就可以了
        printf("%d^%d mod %d=%d",a,c,k,ans);//输出
        return 0;
    }
    
    • 1

    信息

    ID
    5284
    时间
    1000ms
    内存
    128MiB
    难度
    2
    标签
    递交数
    141
    已通过
    42
    上传者