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

Codeforces 125A:厘米轉英尺英寸(四捨五入陷阱)

     編輯:關於C語言

Codeforces 125A:厘米轉英尺英寸(四捨五入陷阱)

問題:Baden 制 1 英寸 = 3 厘米,1 英尺 = 12 英寸。給定 n 厘米(1≤n≤10000),轉換為英尺和英寸,使英尺數最大,結果四捨五入到最近英寸。特殊規則:1cm→0英寸,2cm→1英寸。

算法推導

  • 總英寸 = n / 3(整除),餘數 r = n % 3。
  • 四捨五入:r == 2 時進 1 英寸。
  • 英尺 = 總英寸 / 12,英寸 = 總英寸 % 12。
  • 若進位導致英寸達 12,進 1 英尺,英寸歸 0。

代碼實現

#include <stdio.h>
#include <stdlib.h>

int main() {
    int n, a, b;
    scanf("%d", &n);
    a = n / 36;           // 直接得英尺
    b = (n - 36*a) / 3;   // 剩餘厘米轉英寸
    if (n - 36*a - 3*b == 2) {  // 餘2厘米進位
        b++;
        if (b == 12) { a++; b = 0; }
    }
    printf("%d %d\n", a, b);
    return 0;
}

樣例驗證

輸入輸出說明
421 242cm = 14英寸 = 1英尺2英寸
50 25cm → 1英寸餘2cm → 進位為2英寸
361 0恰好1英尺
381 138cm = 12.66英寸 → 1英尺1英寸

關鍵陷阱

  • 先算英尺再算英寸,避免浮點誤差。
  • 餘數 2 才進位,餘數 1 不進位(題目特殊規則)。
  • 進位後檢查英寸是否達 12,需向英尺進位。

簡短題目卻暗藏四捨五入細節,是競技編程中「細節決定成敗」的典型例題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved