solution.md 1.2 KB
Newer Older
每日一练社区's avatar
每日一练社区 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
# 特别数的和

**题目描述**

小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。

请问,在 1 到 n 中,所有这样的数的和是多少?

**输入格式**

共一行,包含一个整数 n。

**输出格式**

共一行,包含一个整数,表示满足条件的数的和。

**数据范围**

```
1≤n≤10000
```

**输入样例:**

```
40
```

**输出样例:**

```
574
```

以下代码实现了这一功能,请你填补空白处的内容:

每日一练社区's avatar
每日一练社区 已提交
37
```c
每日一练社区's avatar
每日一练社区 已提交
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
#include <iostream>

using namespace std;

int ans, n;

bool check(int n)
{
    while (n)
    {
        int tmpn = n % 10;
        if (tmpn == 2 || tmpn == 0 || tmpn == 1 || tmpn == 9)
            return true;
        __________________
    }
    return false;
}

int main()
{
    cin >> n;

    for (int i = 1; i <= n; i++)
    {
        if (check(i))
            ans += i;
    }

    cout << ans << endl;

    return 0;
}
```

## 答案

每日一练社区's avatar
每日一练社区 已提交
74
```c
每日一练社区's avatar
每日一练社区 已提交
75 76 77 78 79 80 81
        n /= 10;
```

## 选项

### A

每日一练社区's avatar
每日一练社区 已提交
82
```c
每日一练社区's avatar
每日一练社区 已提交
83 84 85 86 87
        n %= 10;
```

### B

每日一练社区's avatar
每日一练社区 已提交
88
```c
每日一练社区's avatar
每日一练社区 已提交
89 90 91 92 93
        break;
```

### C

每日一练社区's avatar
每日一练社区 已提交
94
```c
每日一练社区's avatar
每日一练社区 已提交
95 96
        continue;
```