在進入社會找工作時,通常會經過面試的過程,來決定是否要錄用這個人。假設今天你
去一家程式設計公司面試,面試的主考官出了一道題目。請你設計一個程式來解決下面的問
題:
給你一個長方體,請問最少要用幾個大小相同的正方體,才能把這個長方體填滿,你可
以使用的正方體大小不限,長方體及正方體的邊長必須均為正整數。
輸入說明:
第一行的數字,代表有幾個長方體。第二行開始的每一行,記錄了每個長方體長寬高的
邊長,邊長的範圍為[1, 1000]間的整數。
輸出說明:
對輸入的每個長方體,分別以一行輸出所使用正方體的個數。
輸入範例:
2
4 6 8
3 5 7
輸出範例:
24
105
網誌管理員已經移除這則留言。
回覆刪除Private Sub Form_Load()
回覆刪除Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Input #1, n
For i = 1 To n
Input #1, x, y, z
a = x
b = y
Do Until b = 0
r = a Mod b
a = b
b = r
Loop
c = z
Do Until c = 0
r = a Mod c
a = c
c = r
Loop
Print #2, (x * y * z) / a ^ 3
Next i
Close #1
Close #2
End Sub
阿瑋好,
回覆刪除有時候看似難的題目,一但找出了解的方式,就又變得有些無趣了嗎?
像這題,如果知道了是個最小公倍數,其他人都似乎不想動手寫程式了?
OK,啦。
像這樣的題目,要小心的是,做完了之後,多幾個測試的資料去進,
尤其是在範圍內的「極端」資料。
Dim L, W, T As Long
回覆刪除Private Sub Form_Load()
Open App.Path & "/in.txt" For Input As #1
Open App.Path & "/out.txt" For Output As #2
Input #1, N
For j = 1 To N
Input #1, L, W, T
For i = 1 To L
If L Mod i = 0 And W Mod i = 0 And T Mod i = 0 Then L = L / i: W = W / i: T = T / i
Next i
Print #2, L * W * T
Next j
Close #2
Close #1
End Sub
Private Sub Form_Load()
回覆刪除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, x, y, z
For j = 2 To x
If x Mod j = 0 And y Mod j = 0 And z Mod j = 0 Then
x = x \ j: y = y \ j: z = z \ j
End If
Next j
ans = x * y * z
Print #2, ans
Next i
Close #2
Close #1
End Sub