藍橋杯 計數問題 day3

2021-10-19 07:20:58 字數 1184 閱讀 5431

題目

題目描述

試計算在區間 1 到 n 的所有整數中,數字 x(0 ≤ x ≤ 9)共出現了多少次?例如,在 1 到 11 中,即在 1、2、3、4、5、6、7、8、9、10、11 中,數字 1 出現了 4 次。

示例輸入描述:

輸入共 1 行,包含 2 個整數 n、x,之間用乙個空格隔開。

其中,1≤ n ≤ 1000000,0 ≤ x ≤ 9。

例如:樣例輸入:

11 1

輸出描述:

輸出共 1 行,包含乙個整數,表示 x 出現的次數。

例如:對應輸出:

4總結

我之前也遇到過這種問題,就是直接用了迴圈題裡面的變數來進行運算,但始終搞不懂為什麼不行,今天,總算搞清楚了。

因為i第一次就以i=1進來,然後進入內迴圈體(while)後就變成了i=0,然後又去進行外迴圈體(for)的i++,

然後i就又用i=1的身份進來,就又進行一次和上回一樣的迴圈,這就成為只有count在累加其他數字沒有在變的死迴圈了。

因此,用於記錄迴圈次數的i不應該在迴圈內被改變,我們要在進入while前,把i給另乙個變數,比如 int j=i; ,然後在while內使用變數j去進行運算。

而我在進行思考和除錯的時候,雖然for和while都是迴圈,但因為for然後int i在之前一直在用它控制次數控制次數,所以找錯誤的時候一直關注於while裡面變數的值

然後注意力都在while迴圈,而忽略了要結合for迴圈來看**的問題,半天找不到錯。

總感覺沒有人會犯跟我一樣笨的錯誤…最後把printf輸出放裡面找錯確實是個不錯的方法嘿嘿,看來看書腦子還是進去了點東西_(:з」∠)_

這道就是換湯不換藥的字數統計!

pass**

#include

intmain()

}printf

("%d"

,count)

;return0;

}

錯誤**(死迴圈)

#include

intmain()

}printf

("%d"

,count)

;return0;

}

藍橋杯訓練day3

問題 1102 明明的隨機數 時間限制 1sec 記憶體限制 128mb 提交 2182 解決 935 題目描述 明明想在學校中請一些同學一起做一項問卷調查,為了實驗的客觀性,他先用計算機生成了n個1到1000之間的隨機整數 n 100 對於其中重複的數字,只保留乙個,把其餘相同的數去掉,不同的數對...

藍橋杯練習day3

1.試題 基礎練習 十進位制轉十六進製制 問題描述 十六進製制數是在程式設計時經常要使用到的一種整數的表示方式。它有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f共16個符號,分別表示十進位制數的0至15。十六進製制的計數方法是滿16進1,所以十進位制數16在十六進製制中是10,而十...

藍橋杯試題 演算法提高 計數問題

資源限制 時間限制 1.0s 記憶體限制 128.0mb 問題描述 試計算在區間 1 到 n 的所有整數中,數字 x 0 x 9 共出現了多少次?例如,在 1到 11 中,即在 1 2 3 4 5 6 7 8 9 10 11 中,數字 1 出現了 4 次。輸入格式 輸入檔名為 count.in。輸入...