zoukankan      html  css  js  c++  java
  • 快速幂取模,POJ(1995)

    题目链接:http://poj.org/problem?id=1995

    参考:http://www.cnblogs.com/PegasusWang/archive/2013/03/13/2958150.html

    解题报告:

    #include <iostream>
    #include <stdio.h>
    #include <algorithm>
    
    using namespace std;
    
    ///a^b%c=?
    int PowerMod(int a,int b,int c)
    {
        int ans=1;
        a=a%c;
        while(b>0)
        {
            if(b%2==1)
                ans=(ans*a)%c;
            b=b/2;
            a=(a*a)%c;
        }
        return ans;
    }
    
    int mod_exp(int a,int b,int c)
    {
        int ans=1;
        a=a%c;
        while(b)
        {
            if(b&1)
                ans=ans*a%c;
            a=a*a%c;
            b=b>>1;
        }
        return ans;
    }
    
    int main()
    {
        int T;
        cin >> T;
        while (T--)
        {
            int ans=0;
            int mod;
            int n;
            scanf("%d%d",&mod,&n);
    
            for(int i=0;i<n;i++)
            {
                //ans=0;
                int a,b;
                scanf("%d%d",&a,&b);
                ans=(ans%mod+mod_exp(a,b,mod))%mod;
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
    View Code

    快速幂取模:

    1、

    int ans=1;
    for(int i=1;i<=b;i++)
        ans=ans*a;
    ans=ans%c;

    2、

    int ans=1;
    a=a%c;
    for(int i=1;i<=b;i++)
        ans=ans*a;
    ans=ans%c;

    3、

    int ans=1;
    a=a%c;
    for(int i=1;i<=b;i++)
        ans=(ans*a)%c;
    ans=ans%c;

    4、

    int ans=1;
    a=a%c;
    if(b%2==1)
        ans=(ans*a)%c;
    int k=(a*a)%c;
    
    for(int i=1;i<=b/2;i++)
        ans=(ans*k)%c;
    ans=ans%c;

    5、

    int PowerMod(int a,int b,int c)
    {
        int ans=1;
        a=a%c;
        while(b>0)
        {
            if(b%2==1)
                ans=(ans*a)%c;
            b=b/2;
            a=(a*a)%c;
        }
        return ans;
    }

    6、

    int mod_exp(int a,int b,int c)
    {
        int ans=1;
        a=a%c;
        while(b)
        {
            if(b&1)
                ans=ans*a%c;
            a=a*a%c;
            b=b>>1;
        }
        return ans;
    }
  • 相关阅读:
    GDI 设备环境句柄(2)
    GDI 像素(5)
    Api+Mvc增删查改
    sql语句全
    Mvc 导出
    触发器、事务
    计算时间戳的差
    SQL行转列经典例子(转载)
    Socket (套接字)通信
    MVC上传图片
  • 原文地址:https://www.cnblogs.com/TreeDream/p/5394687.html
Copyright © 2011-2022 走看看