P8960 题解

· · 题解

思路:

通过题目,我们知道了这道题只需要判断从 1n 有没有数含有 2019 中的其中一个,如果有让用来存储的 sum 加上这个数即可。

由于范围不大,所以我们可以直接暴力一个区间内所有的数,然后对每个数的每一位判断,判断出一些满足要求的数,最后输出所有满足要求的数的和就行了。

代码:

#include<bits/stdc++.h>
#define int long long//开long long是个好习惯
using namespace std;
bool baozi(int x)
{
    while(x)
    {
        int t = x % 10;
        if(t == 2 || t == 0 || t == 1 || t == 9) //数位判断
        {
            return true;
        }
        x /= 10;
    }
    return false;
}
signed main()
{
    int n , sum = 0;
    cin >> n;
    for(int i = 1;i <= n;i++)
    {
        if(baozi(i))//如果条件成立, 就让sum加上i
        {
            sum += i;
        }
    }
    cout << sum << endl;//最后输出所有满足条件的数的和
    return 0;
}