描述
求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
-
/**int pow_mod(int a,int n,int c) //非递归可能更省时!#include <iostream> using namespace std; #define ll long long ll pow_mod(ll a,ll b,ll c) { if(b==0) return 1%c; //a的0次方是1 if(b==1) return a%c; //a的1次方就是a ll x=pow_mod(a,b>>1,c); //每次递归把指数除以2 x=x*x%c;//返回就x的平方就好了,这样分治可以大大减少算的时间! if(b&1) x=x*a%c;//当b是一个奇数时 需要再乘上个单个的a。 return x; } int main() { int T;cin>>T; while(T--) { ll a,b,c; cin>>a>>b>>c; cout<<pow_mod(a,b,c)<<endl; } return 0; }
{
int ans=1;
while(n)
{
if(n&1) ans=ans*a%c;
n>>=1;
a=a*a%c;
}
return ans;
} -
**/