特技的幂
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 479 测试通过 : 101
加特技的幂,也是醉了~~~
总提交 : 479 测试通过 : 101
题目描述
幂运算是常见的数学运算之一,其原理是用同一个数相乘多次,但是有的时候当幂指数特别大的时候,这样的运算就太浪费时间。请大家学会在幂中加特技,让幂运算的效率提高到可以接受的程度。
输入
第一个行一个整数T,表示有T组数据
每组数据,输入x,y 求x的y次幂 (2≤ x ,y≤10^9)
输出
每组数据输出一个整数,表示幂运算对1000000007取模后的结果
样例输入
2
2 4
2 100000000
样例输出
16
494499948
#include <iostream>
#include <cstdio>
using namespace std;
int64_t mod_exp(int64_t a, int64_t b, int64_t c) //¿ìËÙÃÝÈ¡Óàa^b%c
{
int64_t res, t;
res = 1 % c;
t = a % c;
while (b)
{
if (b & 1)
{
res = res * t % c;
}
t = t * t % c;
b >>= 1;
}
return res;
}
int main()
{
int T;
cin >> T;
while (T--)
{
int64_t x,y;
cin >> x>>y;
cout << mod_exp(x, y, 1000000007) << endl;
}
return 0;
}加特技的幂,也是醉了~~~
版权声明:本文为博主原创文章,未经博主允许不得转载。