zoukankan      html  css  js  c++  java
  • 高级模运算

    人与人是不同的,有些人喜欢阅读满是图片的杂志,有些人喜欢在地下室引爆炸弹,而还有一些却喜欢一些麻烦的数字游戏。
    每个人选择两个数字Ai和Bi写在纸上,其他人不能看见。过了一段时间后,每个人说出自己纸上的数字,然后每个人的目标是求出所有的Ai^Bi的和再模M的值,最先算出结果的,就是胜利者。
    作为一个程序员,你当然有办法编一个程序,以最快的速度算出结果,赢得比赛。

    Input Format:

    第一行是一个数字M (1 <= M <= 45000)。第二行是数字H(1 <= H <= 45000)表示参加游戏的人数。接下来H行,每行两个数Ai和Bi(1<=Ai,Bi<=2^31),之间用一个空格隔开。

    Output Format:

    输出一个数字, (A1^B1+ A2^B2 + ... + AH^BH) mod M  的值。


    Sample input:

    16
    4
    2 3
    3 4
    4 5
    5 6

    Sample output:

    题解:

    快速幂,利用同余定理不断求余,余数相加再求余

    #include<iostream>
    #include<iomanip>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int m,h;
    typedef unsigned long long LL;
    LL A,B,sum=0;
    
    LL my_pow(LL x,LL y)
    {
        LL ans=1;
        while(y!=0)
        {
            if(y%2==1)
                ans=ans*x%m;
            y/=2;
            x=x*x%m;
        }
        return ans;
    }
    
    int main()
    {
        ios::sync_with_stdio(false);
        cin>>m>>h;
        for(int i=1;i<=h;i++)
        {
            cin>>A>>B;
            sum+=my_pow(A,B);
        }
        cout<<sum%m<<endl;
        return 0;
    }
  • 相关阅读:
    JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用
    Gerrit使用简介
    Gerrit2安装配置
    SSH原理与运用(二):远程操作与端口转发
    SSH原理与运用(一):远程登录
    常用的几个工具网站
    MQTT、CoAP
    Gerrit代码Review实战
    net share
    Gitlab+Gerrit+Jenkins完整对接
  • 原文地址:https://www.cnblogs.com/kekit/p/6524285.html
Copyright © 2011-2022 走看看