UPC专题训练a^b

问题 A: a^b

http://exam.upc.edu.cn/problem.php?cid=1430&pid=0

时间限制: 1 Sec  内存限制: 128 MB
提交: 592  解决: 126
[提交] [状态] [讨论版] [命题人:admin]

题目描述

求 a 的 b 次方对 p 取模的值,其中 1≤a,b,p≤10^9

输入

三个用空格隔开的整数a,b和p。

输出

一个整数,表示a^b mod p的值。

样例输入

2 3 9

样例输出

8

代码:

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    long long int a,b,p,sum;
    cin>>a>>b>>p;
    if(p==1)
        sum=pow(a,b);
    else
    {
        sum=1;
        a=a%p;
        while(b)
        {
            if(b&1)
                sum=sum*a%p;
            a=a*a%p;
            b>>=1;
        }
    }
    cout<<sum%p<<endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/sunny_hun/article/details/81334480
UPC