SFQRM 2015-03-29 01:16 采纳率: 0%
浏览 4936
已采纳

一道关于大数幂运算的题目,c语言实现

题目描述
幂运算是常见的数学运算之一,其原理是用同一个数相乘多次,但是有的时候当幂指数特别大的时候,这样的运算就太浪费时间。请大家学会在幂中加特技,让幂运算的效率提高到可以接受的程度。
输入:
第一个行一个整数T,表示有T组数据
每组数据,输入x,y 求x的y次幂 (2≤ x ,y≤10^9)
输出:
每组数据输出一个整数,表示幂运算对1000000007取模后的结果
样例输入:
2
2 4
2 100000000
样例输出:
16
494499948
我的代码总是超时,求好方法!!谢谢!!

  • 写回答

9条回答 默认 最新

  • threenewbee 2015-03-29 03:17
    关注

    不知道你怎么算的
    我们知道
    a^m可以视作a^p*a^q(p+q=m)
    而如果p=m,显然,我们只要算了a^p,就可以再平方下就是最后的结果了。
    因此最简单的做法就是,将指数转化成2的幂相加的结果,这相当于二进制计算,比如100000000
    就是101111101011110000100000000(2)
    那么就是256+8192+16384+32768+65536+262144+1048576+...
    然后我们分别计算N的这些次方的幂,别忘了,我们可以通过平方翻倍很快算出来。
    最后再把结果相乘。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部