solution.md 1.1 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
#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;
ToTensor's avatar
ToTensor 已提交
51
        __________________;
每日一练社区's avatar
每日一练社区 已提交
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
    }
    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
ToTensor's avatar
ToTensor 已提交
75
n /= 10;
每日一练社区's avatar
每日一练社区 已提交
76 77 78 79 80 81
```

## 选项

### A

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

### B

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

### C

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