1. 程式人生 > 其它 >藍橋杯[第十屆][B組]-特別數的和

藍橋杯[第十屆][B組]-特別數的和

資源限制 記憶體限制:256.0MB   C/C++時間限制:1.0s   Java時間限制:3.0s   Python時間限制:5.0s 問題描述   小明對數位中含有 2、0、1、9 的數字很感興趣(不包括前導 0),在 1 到
  40 中這樣的數包括 1、2、9、10 至 32、39 和 40,共 28 個,他們的和是 574。請問,在 1 到 n 中,所有這樣的數的和是多少? 輸入格式   輸入一行包含兩個整數 n。 輸出格式   輸出一行,包含一個整數,表示滿足條件的數的和。 樣例輸入 40 樣例輸出 574 評測用例規模與約定   對於 20% 的評測用例,1 ≤ n ≤ 10。 對於 50% 的評測用例,1 ≤ n ≤ 100。對於 80% 的評測用例,1 ≤ n ≤ 1000。對於所有評測用例,1 ≤ n ≤ 10000。   這題屬於簡單題,唯一需要注意的是評測資料範圍,不過這一題範圍不大,可以用int,如果n>=10^8 則要考慮使用 long long型資料累加和輸出。
#include <bits/stdc++.h>
using
namespace std; int ans=0; bool check(int n) { while(n) { if(n%10 == 2 || n%10 == 0 || n%10 == 1 ||n%10 == 9) { return true; } n/=10; } return false; } int main() { int n; cin>>n; while(n){ if(check(n)) ans+=n; n--; } cout
<<ans; return 0; }