有一個程式設計師住在一條街上,這條街上的房子都在路的同一邊且門牌號碼是從1-2-3-4-....連續下來。有一天晚上他牽著他的狗出門散步,出門之後往左邊走,因為溜狗有點無聊,所以她順便把經過的房子的門牌號碼都加起來。隔天晚上他又出門溜狗,但這一次她往右走並且也把經過的門牌號碼加起來。讓他很驚訝的是:這兩次的數字竟然一樣。
當然,這個巧合現象跟這條街共有幾間房子(n),以及他住在第幾間房子(k)有關係。請寫出一個程式找出前十個滿足這樣條件的數對(k,n)。在輸出中有前2個這樣的數對。
每一對數字k,n的長度均為10,向右靠齊。請將檔案輸出至"out.txt"。 ※此題無須"in.txt"
輸出範例:
6 8
35 49
出自 程式設計隊訓練教材 NO.34 門牌號碼
參照 http://chscvb.blogspot.com/2010/01/20100125.html
Private Sub Form_Load()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
For i = 1 To 60000
a = a + (i - 1)
b = 0
For j = (i + 1) To 60000
b = b + j
If b > a Then Exit For
If b = a Then Print #2, i, j
Next
Next
Close #2
Close #1
End Sub
算到 60000 整能求到 6 個
有算到 50 萬過,但是也還不到10個
算 100 萬時當機了 - -
If b = a Then Print #2, i, j
回覆刪除這一行忘了在後面補 :exit for
arro好,
回覆刪除果然又是消失了啊。
算了,再打一次吧。
1.將你的程式的輸出也po上來吧,這樣我比較容易知道正確與否。(我手邊常常是沒有vb的)
2.土法煉鋼速度太慢的話,再來就要改進程式的部分。
你的a是每次加上1個最後的數而已,這很好。但是,你的b並沒有用類似的方式。
你的b應該可以每次先減掉前頭的數,然後依次加後頭的數,這樣會快很多吧。
試試吧。(我也試試看這個po會不會再消失)
囧~
回覆刪除那我又要重新RUN一次程式了
只好再改良囉
不過應該會求到很後面的數吧