Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a215. 明明愛數數

題目連結

https://zerojudge.tw/ShowProblem?problemid=a215

解題思路

題目希望我們找出從n開始,要往下加多少數字總和才會超過m。我們可以利用迴圈重複執行的特性,從n開始將跑過的數字逐一加總,直到總和大於m為止,迴圈的執行次數即為需要的數字數量。

注意事項

相信很多程式教材在討論for迴圈和whle迴圈這兩種常見迴圈的差別時,都會提到for迴圈的特色是可以重複運行指定次數,因此許多程式初學者會誤以為for迴圈在使用時必須指定其運行次數,但其實並非如此。for迴圈和while迴圈真正的差異在於for迴圈有一個變數叫做「迴圈變數」,他的變數值會隨著迴圈運行次數的增加而改變,進而控制for迴圈在特定條件下結束運行,因此才會衍伸出指定運行次數這樣的用法,但我們也可以將其終止條件寫成不同的形式來做更多變化。以本程式碼來說,我們for迴圈的執行條件是sum<=m,也就是說一旦sum的值大於m,for迴圈就會結束執行。

程式碼:C語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#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;
}