【description】
a^b的含義是「a的b次方」 ,1<=a,b<=1000000000。請你程式設計計算a^b的最後3位數。
【input】
輸入有多個案例。每個案例佔一行,每行兩個數a、b。當a=0,b=0時表示結束。
【ouput】
每行對應輸出乙個結果。
【sample input】
2 312 6
6789 10000
999999999 999999999
0 0【sample output】
8984
1999
【python**】(部分)
def
f(c, e)
: n =
1000
d =1while e >0:
if e %2==
0:c = c * c % n
e /=
2else
: d = d * c % n
e -=
1return d
defmain()
: a =
int(
input()
) b =
int(
input()
)print
(f(a,b)
)main(
)
【解析】:
注意資料的長度,int是不夠長的,需要用__int64或long long
【c語言】
#include
__int64 f
(__int64 c, __int64 e)
else
}return d;
}int
main()
printf
("%i64d\n",f
(a, b));
}return0;
}
蒙哥馬利約減演算法
我們需要求t mod n 的結果,設蒙哥馬利約減演算法為f,可以做到f x x times r mod n r為進製數或進製數的冪次,在計算機當中,設n的2進製位數為s,r可以取2 s,且與n互質 比如2進製數,r 2 10進製數,r 10 2 30 進製,r 2 30 如此這樣,某個r進製的數乘除...
快速冪 快速冪取模
快速冪的思想在於快速求解高冪指數的冪運算 複雜度為o log2n 與樸素運算相比有很大的改進 接下來給出 其中有詳解 include include using namespace std typedef long long ll ll pow1 int a,int b 最常規的方法 將冪指數轉化為...
快速冪 快速冪取模
求x m 一般方法是 xm x xm 1,這樣需要做m次乘法,未免過慢。加速方法有兩種。1.基於當m為偶數時,xm x2 m 2 當m為奇數時,xm x xm 1。顯然當m為偶數時m會減半,當m為奇數時,下次就是偶數。m可以很快收斂到0.表示冪 2.將m看成二進位制串mkmk 1 m1m0,那麼xm...