1465: [蓝桥杯2019初赛]特别数的和

题目描述 小明对数位中含有2、0、1、9 的数字很感兴趣(不包括前导0) 在1到40中这样的数包括1、2、9、10 至32、39
和40,共28 个,他们的和是574。 请问,在1到n 中,所有这样的数的和是多少? 输入 输入一个正整数n(1<=n<=10000)
输出 输出一行,包含一个整数,表示满足条件的数的和。
样例输入
40
样例输出
574

#include
using namespace std;
typedef long long ll;
const ll mod = 1e9+7;

bool check(int n)
{
    stringstream ss;
    string t;
    ss << n;
    ss >> t;
    bool f = false;
    for(int i = 0; i < t.length(); ++i)
    {
        if(t[i] == '0' || t[i] == '2' || t[i] == '1' || t[i] == '9')
        {
            f = true;
            break;
        }
    }
    return f;
}

int main() {
	ios::sync_with_stdio(false);
	cin.tie(0);

    int n;
    cin >> n;
    int ans = 0;
    for(int i = 1; i <= n; ++i)
    {
        if(check(i))
        {
            ans += i;
        }
    }
    cout << ans;
	return 0;
}

你可能感兴趣的:(数据结构)