2012年11月5日 星期一

求餘數

求餘數對於會寫程式的人來說,是個簡單的問題,例如用VB 來求餘數時,可以用mod這個關鍵字來實作。但如果算式為R = B^P mod M 的型態,給B、P、及M,要算出餘數R,當B 或P 很大時,那就變得不簡單了。現在,請你設計一個程式,來解決上述這個不簡單的問題。 

輸入說明: 

第一行的數字,表示有幾個問題要求解,第二行開始的每一行,為一個獨立的問題。每一行包含三個數字,分別為B、P、及M,例如:10 2009 9 代表B=10、P=2009、M=9。所有數字均為正整數,其範圍屬於[1,100000]。

輸出說明:

對輸入的每個問題分別以一行輸出餘數R。

輸入範例:

2

10 2009 9

2 99 5

輸出範例:
1
3

4 則留言:

  1. Dim mycount As Integer
    Private Sub Form_Load()
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, mycount
    Do Until EOF(1)
    Input #1, x, y, z
    ans = 1
    For i = 1 To y
    ans = ans * x Mod z
    Next
    Print #2, ans
    Loop
    Close #2
    Close #1
    End Sub

    回覆刪除
  2. Bob好~
    程式正確
    不過雖然說先讀取第一行再用Do loop 讀取到檔案結尾是OK的
    但是都已經有mycount了直接用for next就好囉~

    回覆刪除
  3. Private Sub Form_Load()
    Me.Hide
    Open App.Path & "\in.txt" For Input As #1
    Open App.Path & "\out.txt" For Output As #2
    Input #1, x
    For i = 1 To x
    Input #1, b, p, m
    k = b
    For j = 1 To p - 1
    k = k * b
    k = k Mod m
    Next
    Print #2, k

    Next
    Close
    Close
    End
    End Sub

    回覆刪除