2016年9月17日 星期六

程式集訓 A014: 次方求餘

#coding=utf8

#程式集訓 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
>>> 

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...