1294. 【CCF2017第四期】取余运算
(Input: mod.in, Output: mod.out)
时间限制: 1 s 空间限制: 256 MB
题目描述
输入三个正整数a,b,c计算a^b mod c。
输入
从文件 mod.in
中读入数据。
第一行输入三个正整数a,b,c。
输出
输出到文件 mod.out
中。
输出a^b mod c的值。
样例输入
2 3 5
样例输出
3
数据范围限制
30%的数据满足:a,c*c在long范围内,b<=10000;
50%的数据满足:a,b,c*c都在long范围内;
100%的数据满足:a,b,c在long范围内。
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("mod.in","r",stdin);
freopen("mod.out","w",stdout);
long long a,b,c,s=1,ans=1;
scanf("%lld%lld%lld",&a,&b,&c);
while(b)
{
if(b%2==1)ans=(ans%c*a%c)%c;
b/=2;
a=((a%c)*(a%c))%c;
}
printf("%lld",ans);
}