首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

HDU 1985 Conversions:公制與英制單位換算

     編輯:關於C++

題目大意

給定數值與單位(kg 千克、lb 磅、l 升、g 加侖),按固定換算率雙向轉換並保留 4 位小數。換算對照表:

  • 1 kg = 2.2046 lb
  • 1 l = 0.2642 g
  • 1 lb = 0.4536 kg
  • 1 g = 3.7854 l

解題思路:查表法

建立兩個陣列分別存放原單位與目標單位,以及對應的乘法因子。讀入數據後,線性查找單位索引,乘以因子即得結果。複雜度 O(1) 每查詢。

參考代碼 (Java)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] from = {"kg", "l", "lb", "g"};
        String[] to   = {"lb", "g", "kg", "l"};
        double[] factor = {2.2046, 0.2642, 0.4536, 3.7854};
        
        int T = sc.nextInt();
        for (int cs = 1; cs <= T; ++cs) {
            double val = sc.nextDouble();
            String unit = sc.next();
            int idx = -1;
            for (int i = 0; i < 4; ++i)
                if (from[i].equals(unit)) { idx = i; break; }
            double ans = val * factor[idx];
            System.out.printf("%d %.4f %s\n", cs, ans, to[idx]);
        }
    }
}

注意事項

  1. 輸出格式:`Case編號 轉換後數值(4位小數) 目標單位`,編號從 1 開始。
  2. 雙精度 double 足夠精度;printf("%.4f") 自動四捨五入。
  3. 輸入可能包含 0 l 等邊界情況,正常處理即可。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved