乘的更快
Time Limit: 1000 ms Memory Limit: 64 MB
Total Submission: 837 Submission Accepted: 145
Total Submission: 837 Submission Accepted: 145
Description
上初中的时候我们就学会了幂乘运算,可是我们却不知道对于高阶的幂乘,出结果的方法比较慢,那么你有什么更好的方法吗?
Input
第1行,一个整数N(1<=N<=1000),表示要计算的数据组数
第2-N+1行,每行两个整数,第1个是x(1<=x<=100),表示底数,第2个是y(0<=y<=10000000),表示指数。
第2-N+1行,每行两个整数,第1个是x(1<=x<=100),表示底数,第2个是y(0<=y<=10000000),表示指数。
Output
对于每一组输入的数据给出幂乘的结果x^y(x的y次方),由于结果可能非常大,要求对99991取余。
Sample Input
Original | Transformed |
3 2 3 5 10 3 0
3[EOL] 2[SP]3[EOL] 5[SP]10[EOL] 3[SP]0[EOL] [EOF]
Sample Output
Original | Transformed |
8 66498 1
8[EOL] 66498[EOL] 1[EOL] [EOF]
Source
ZGF
------------------------------------------------------------分界线-----------------------------------------------
思路:???????!!
#include<iostream>
using namespace std;
__int64 ex(__int64 n,__int64 m)
{
__int64 t;
if(m==0) return 1%99991;
else if(m==1) return n%99991;
else
{
t=ex(n,m/2)%99991;
t=t*t%99991;
if(m%2) t=t*n%99991;
}
return t;
}
int main()
{
__int64 n,m;
int q;
cin>>q;
while(q--)
{
cin>>n>>m;
cout<<ex(n,m)<<endl;
}
return 0;
}