次方求模
时间限制:1000 ms | 内存限制:65535 KB
难度:3
描述
求a的b次方对c取余的值
输入
第一行输入一个整数n表示测试数据的组数(n<100)
每组测试只有一行,其中有三个正整数a,b,c(1=<a,b,c<=1000000000)
输出
输出a的b次方对c取余之后的结果
样例输入
3 2 3 5 3 100 10 11 12345 12345
样例输出
3 1 10481
#include<stdio.h>
#include<iostream>
#include<cmath>
#include<set>
#include<string>
#include <memory.h>
using namespace std;
int Pow(long long int a,long long int n,long long int b)//返回值是a的n次方对b取余后的值
{
int result=1;
a=a%b;//积的取余等于取余的积取余
while(n>0)
{
if(n%2==1)
result=result*a%b;//n是奇数的话就要多乘一次,原理和前面的二分求幂一样
n=n/2;//二分
a=a*a%b;//积的取余等于取余的积取余
}
return result;
}
int main()
{
int b;
long long int n,m,s;
//cout<<4%9;
cin>>b;
while(b--)// != EOF scanf("%f",&m)+1
{
long long int f=0;
cin>>n>>m>>s;
f=Pow(n,m,s);
cout<<f%s<<endl;//恭喜发财!
}
return 0;
}