特技的幂 南邮NOJ网络选拔赛2075

来源:互联网 发布:搜狗搜索引擎优化 编辑:程序博客网 时间:2024/05/08 05:15

特技的幂

时间限制(普通/Java) : 1000 MS/ 3000 MS          运行内存限制 : 65536 KByte
总提交 : 479            测试通过 : 101 

题目描述

幂运算是常见的数学运算之一,其原理是用同一个数相乘多次,但是有的时候当幂指数特别大的时候,这样的运算就太浪费时间。请大家学会在幂中加特技,让幂运算的效率提高到可以接受的程度。



输入

第一个行一个整数T,表示有T组数据

每组数据,输入xxy次幂 (2 x ,y10^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;}

加特技的幂,也是醉了~~~

0 0
原创粉丝点击