有一個程式設計師住在一條街上,這條街上的房子都在路的同一邊且門牌號碼是從1-2-3-4-....連續下來。有一天晚上他牽著他的狗出門散步,出門之後往左邊走,因為溜狗有點無聊,所以她順便把經過的房子的門牌號碼都加起來。隔天晚上他又出門溜狗,但這一次她往右走並且也把經過的門牌號碼加起來。讓他很驚訝的是:這兩次的數字竟然一樣。
當然,這個巧合現象跟這條街共有幾間房子(n),以及他住在第幾間房子(k)有關係。請寫出一個程式找出前十個滿足這樣條件的數對(k,n)。在輸出中有前2個這樣的數對。
每一對數字k,n的長度均為10,向右靠齊。請將檔案輸出至"out.txt"。 ※此題無須"in.txt"
輸出範例:
6 8
35 49
跑好久,也只能跑到第六個。
回覆刪除Private Sub Form_Load()
Me.Hide
Dim c, d As Double
Open App.Path & "\out.txt" For Output As #1
b = 1000
c = 0
e = 1
Do
b = b * 10
For i = e To b
c = c + i - 1
d = 0
For j = (i + 1) To b
d = d + j
If d = c Then Print #1, i & " " & j: a = a + 1
If a >= 6 Then Exit Do
If d > c Then Exit For
Next
Next
e = i
Loop Until a >= 10
Close
End
End Sub
輸出:
6 8
35 49
204 288
1189 1681
6930 9800
40391 57121
小冰好,
回覆刪除先再稱讚一下大家,暑假靠毅力向前,是有前途的,加油。
***
你中心的那個for-next是條件的方式,那用條件迴圈會比較好。
基本上這題用程式來寫之外,也可以用數學的等差級數來驗算。(n*n-n=2*k*k)
其中的k是住在第幾間,所以用個c來將1到k-1一直加起來是對的。
那個d就是將c-(k+1)-(k+2)-...-(n),一直到等於0(這個k,n就是解答之一),還是小於0(換下個k)
這樣子重複的運算就不會太多,就不會做不完了。(或者會做快些)
***
a=0
k=1
c=1
n=0
do
k=k+1
c = c + (k-1) '這個你是做對的
'**第2層條件迴圈
d = c
n = k
do
n = k+1
d = d -n
loop until d <=0
if d=0 then
a = a +1
print #1,k,n
end if
loop until a >=10