#40846: 解答 c++


hs210023@students.hshs.chc.edu ... (天底下最帥的那個男人)

學校 : 不指定學校
編號 : 274462
來源 : [39.9.190.55]
最後登入時間 :
2024-06-17 21:52:54
a215. 明明愛數數 | From: [27.247.62.93] | 發表日期 : 2024-06-14 22:00

當 sum 初始化為 n 時,應該從 i = 0 開始計算,這樣在第一次迴圈時 sum 會等於 n 而不是 n + 1。這樣可以確保起始數字 n 被正確計算在內。

 

這裡是修正後的程式碼:
 
#include <stdio.h>

int main() {
    // 宣告變數n、m,分別代表起始數字,以及數字總和的比較標準
    int n, m;
    // 使用EOF寫法讀取n、m
    while (scanf("%d %d", &n, &m) != EOF) {
        // 宣告變數sum,賦值為n,代表數字總和
        // 宣告變數i,代表從n開始,要加幾個數字,數字總和才會大於m
        int sum = n, i;
        // 用for迴圈將從n開始的數字逐一加總,直到sum>m為止
        for (i = 1; sum <= m; i++)
            sum += n + i;
        // 輸出
        printf("%d\n", i);
    }
    return 0;
}

 

說明

 

  1. 初始化變數
    • sum 初始化為 n,代表數字總和。
    • i 代表從 n 開始,要加幾個數字,數字總和才會大於 m
  2. 迴圈計算
    • 使用 for 迴圈從 i = 1 開始計算,將從 n 開始的數字逐一加總,直到 sum 超過 m
    • 每次迴圈中,將 n + i 加到 sum
  3. 輸出結果
    • 當 sum 超過 m 時,輸出累加的數字數量 i

 

這樣的程式碼能夠正確地解決這個問題,並且能夠處理範圍內的所有輸入。希望這個解決方案對你有幫助!
 
ZeroJudge Forum