2305: power

Memory Limit:128 MB Time Limit:1.000 S
Judge Style:Text Compare Creator:
Submit:64 Solved:30

Description

需要计算出A的B次方用999983取模的结果。保证AB是在2^30以内的正整数。

Input

读入每行都是一组测试数据AB。

Output

 结果一行对应一个数据的结果。

Sample Input Copy

  2 3
  3 4

Sample Output Copy

  8
  81

HINT

a的b次方如果b是奇数则a^b=a*(a*a)^(b/2)如果b是偶数则a^b=(a*a)^(b/2);

例如2^7=2*(2*2)^(7/2)=2*(4)^3=2*4*(4*4)^(3/2)=2*4*(16)^1=2*4*16*(16*16)^(1/2)=128;

2^8=(2*2)^(8/2)=(4)^4=(4*4)^(4/2)=(16)^2=(16*16)^(2/2)=(256)^1=256*(256*256)^(1/2);

A的B次方=B个A连乘的积,3的4次方=3*3*3*3=81

2^30=30个2连乘的积≈10亿

a*b mod c=(a mod c)*(b mod c) mod c

注意结果和中间结果都会超过长整型longint的范围,注意要用free pascal下的int64类型的数据才能保证结果的正确性。如果你是在TP环境下编程的话,你在提交时只要将longint都改成int64后再将程序交上去就行。注意循环变量不能使用int64类型。


语言:C++Pascal

Source/Category