2010年3月23日 星期二

用正方體填滿

在進入社會找工作時,通常會經過面試的過程,來決定是否要錄用這個人。假設今天你
去一家程式設計公司面試,面試的主考官出了一道題目。請你設計一個程式來解決下面的問

題:

給你一個長方體,請問最少要用幾個大小相同的正方體,才能把這個長方體填滿,你可

以使用的正方體大小不限,長方體及正方體的邊長必須均為正整數。

輸入說明:

第一行的數字,代表有幾個長方體。第二行開始的每一行,記錄了每個長方體長寬高的

邊長,邊長的範圍為[1, 1000]間的整數。

輸出說明:

對輸入的每個長方體,分別以一行輸出所使用正方體的個數。

輸入範例:

2

4 6 8

3 5 7

輸出範例:

24

105

5 則留言:

  1. 網誌管理員已經移除這則留言。

    回覆刪除
  2. 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

    回覆刪除
  3. 阿瑋好,
    有時候看似難的題目,一但找出了解的方式,就又變得有些無趣了嗎?
    像這題,如果知道了是個最小公倍數,其他人都似乎不想動手寫程式了?
    OK,啦。
    像這樣的題目,要小心的是,做完了之後,多幾個測試的資料去進,
    尤其是在範圍內的「極端」資料。

    回覆刪除
  4. 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

    回覆刪除
  5. 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

    回覆刪除