C++
$\color{gold}{— > 蓝桥杯辅导课题解}$
思路:
$编写一个check函数检查数中是否2,0,1,9,然后从1到n枚举,如果符合check函数,直接加上这个数$
#include<bits/stdc++.h>
using namespace std;
int n, sum;
bool check(int x) { // 判断 x 是否含有2, 0, 1, 9
while (x) {
if (x % 10 <= 2 || x % 10 == 9) // 由于2,0,1都是小于2的,直接 x % 10 <= 2,更加的优雅
return true;
x /= 10;
}
return false;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i ++) // 直接 1 ~ n 枚举
if (check(i)) // 符合
sum += i; // 加上这个数
cout << sum;
return 0;
}
while (x)
===while (x > 0)
x % 10 <= 2
=> 观察来提高算法效率6