程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 超時-一道關於大數冪運算的題目,c語言實現

超時-一道關於大數冪運算的題目,c語言實現

編輯:編程綜合問答
一道關於大數冪運算的題目,c語言實現

題目描述
冪運算是常見的數學運算之一,其原理是用同一個數相乘多次,但是有的時候當冪指數特別大的時候,這樣的運算就太浪費時間。請大家學會在冪中加特技,讓冪運算的效率提高到可以接受的程度。
輸入:
第一個行一個整數T,表示有T組數據
每組數據,輸入x,y 求x的y次冪 (2≤ x ,y≤10^9)
輸出:
每組數據輸出一個整數,表示冪運算對1000000007取模後的結果
樣例輸入:
2
2 4
2 100000000
樣例輸出:
16
494499948
我的代碼總是超時,求好方法!!謝謝!!

最佳回答:


不知道你怎麼算的
我們知道
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的這些次方的冪,別忘了,我們可以通過平方翻倍很快算出來。
最後再把結果相乘。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved