首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

HDOJ Sum Problem AC 技巧:輸出每行結果後必須換行,printf("%d\n", sum) 而非 printf("%d", sum)

     編輯:程式設計疑難解答

經典入門題:輸入多行整數 n,輸出 1+2+...+n。代碼邏輯正確但 **WA (Wrong Answer)**,根因:**輸出格式缺少換行符**,導致所有結果擠在一行,不符合「每行一個結果」要求。

錯誤代碼

int main() {
    int n;
    while (scanf("%d", &n) == 1) {
        int sum = 0;
        for (int i = 1; i <= n; i++) sum += i;
        printf("%d", sum);  // 缺少 \n
    }
    return 0;
}

修正代碼

int main() {
    int n;
    while (scanf("%d", &n) == 1) {
        int sum = 0;
        for (int i = 1; i <= n; i++) sum += i;
        printf("%d\n", sum);  // 加上 \n
    }
    return 0;
}

題目要求細節

「For each case, output SUM(n) in one line, followed by a blank line.」

  • in one line:每個結果佔一行 → %d\n。
  • followed by a blank line:每行結果後還有一空行 → %d\n\n 或兩次 printf("%d\n\n", sum)。
  • 樣例輸出:1\n\n5050\n\n(兩行結果中間有空行)。

完美 AC 代碼

int main() {
    int n;
    while (scanf("%d", &n) == 1) {
        int sum = n * (n + 1) / 2;  // 直接公式 O(1),避免循環超時
        printf("%d\n\n", sum);      // 結果 + 空行
    }
    return 0;
}

OJ 提交避坑指南

  1. 讀清輸出格式:是否有空行、末尾空格、大小寫、標點。
  2. 邊界測試:n=1、n=0(若允許)、最大 n 導致溢出(用 long long)。
  3. 輸入結束判斷:while(scanf("%d",&n)==1) 處理文件結束/EOF。
  4. 快速 IO:大數據量用 ios::sync_with_stdio(false); cin.tie(nullptr); (C++)。

一個 \n 之差,WA 與 AC 天壤之別。養成「寫完輸出語句檢查換行」習慣,省去無數次無謂提交。

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