这道题比较容易理解
* 核心就是取该数的最后一位进行判断即mod运算,如果不是再 / 运算去除该数当前的最后一位再回到mod 运算。。。。循环判断。
#include<bits/stdc++.h>
using namespace std;
int n;
int sum;
bool check(int x){
while(x){ //只要数中除首位不是0外,其他位有一位是 0、1、2、9 即可
if(x%10 <= 2 || x%10 == 9) //数位分离判断每一位上是否含有2, 0, 1, 9中的数字
return true;
x/=10; // 若当前位数字不符合条件,使用x /= 10将x除以10并取整,丢弃最低位数字。如:25 :25%10=5 不满足,然后25/10=2再进入if判断
}
return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
if(check(i))
sum+=i;
cout<<sum<<endl;
return 0;
}
0 回复
0 转发
1 喜欢
0 阅读



