1465: [藍橋杯2019初賽]特別數的和
- 2020 年 2 月 26 日
- 筆記
題目
小明對數位中含有2、0、1、9 的數字很感興趣(不包括前導0)。在1到40中這樣的數包括1、2、9、10 至32、39 和40,共28 個,他們的和是574。請問,在1到n 中,所有這樣的數的和是多少?
思路
感覺好像之前做過類似的,判斷一個數位中是否包括某數字,這個函數寫過很多次了,循環取余判斷即可,或者字元串判斷字串(比較麻煩一點)。這裡稍微複習一下string庫,但是推薦使用循環取余。
使用string庫中的find:
將int轉換為string,再進行字元串字串的對比,這裡需要注意返回值。
string中find()返回值是字母在母串中的位置(下標記錄),如果沒有找到,那麼會返回一個特別的標記npos。(返回值可以看成是一個int型的數)。
往年也考過類似題目,傳送門:1452: [藍橋杯2019初賽]平方和
程式碼
//1465: [藍橋杯2019初賽]特別數的和 #include <iostream> using namespace std; bool check(int num){ int tmp = num; while(num){ tmp = num % 10; if(tmp == 2 || tmp == 0 || tmp == 1 || tmp == 9) return true; num /= 10; } return false; } int main(){ int sum; int num; cin>>num; for(int i = 1; i <= num; i++){ if(check(i)){ sum += i; } } cout<<sum; return 0; }

