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 74 75 76
#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;
}
```


## aop

### before

每日一练社区's avatar
每日一练社区 已提交
77
```c
每日一练社区's avatar
每日一练社区 已提交
78 79 80 81 82

```

### after

每日一练社区's avatar
每日一练社区 已提交
83
```c
每日一练社区's avatar
每日一练社区 已提交
84 85 86 87 88

```

## 答案

每日一练社区's avatar
每日一练社区 已提交
89
```c
每日一练社区's avatar
每日一练社区 已提交
90 91 92 93 94 95 96
        n /= 10;
```

## 选项

### A

每日一练社区's avatar
每日一练社区 已提交
97
```c
每日一练社区's avatar
每日一练社区 已提交
98 99 100 101 102
        n %= 10;
```

### B

每日一练社区's avatar
每日一练社区 已提交
103
```c
每日一练社区's avatar
每日一练社区 已提交
104 105 106 107 108
        break;
```

### C

每日一练社区's avatar
每日一练社区 已提交
109
```c
每日一练社区's avatar
每日一练社区 已提交
110 111
        continue;
```