#程式集訓 A014: 次方求餘
'''
A014 次方求餘
輸入三個正整數 n p d,輸出(n^p)%d,即 n 的 p次方 對 d的餘數。
這題看似簡單,卻包含一個數學陷阱。簡單的求餘數不難,
但是這題有個小陷阱,就是"次方",取次方可能會出現極大數字,造成溢位。
因此利用迴圈處理次方的運算,每次迴圈當中,持續將每次增加的底數去
餘數,之後再取一次餘數,利用這個方式避免溢位。
'''
print("輸入三個正整數 n p d,輸出(n^p)%d,即 n 的 p次方 對 d的餘數。")
while True:
try:
n,p,d=(input("請輸入 輸入三個正整數 n p d : " ).split())
n=int(n)
p=int(p)
d=int(d)
break
except ValueError:
print ('這是不合法的輸入. 請再輸入一次...')
continue
if (d==0) :
break
ans = int(1)
for i in range(1,p+1):
ans = ans*n
ans %= d
print("(",n,"^",p,")%",d," 餘數為",'{:6d}'.format(ans))
#=========================================
輸入三個正整數 n p d,輸出(n^p)%d,即 n 的 p次方 對 d的餘數。
請輸入 輸入三個正整數 n p d : 59 89 80
( 59 ^ 89 )% 80 餘數為 59
>>>
沒有留言:
張貼留言