蓝桥杯—特别数的和![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/ff0a686711470f5dbe6a7d387a565138.png#pic_center)
解决方案:
1.从1遍历至n
2.确定每个数是否含有2、0、1、9
#include"stdio.h"
int g(int a,int n){//遍历数的每一位
int x;
// int n;
//n=nn;
while(a>0){
x=n/a;
if(x==2||x==0||x==1||x==9){
//printf("%d\n",nn);
return 0;
}
//printf("%d\n",x);
n=n-x*a;
a=a/10;
}
return 1;
}
int f(int n){//找到最大整数a,如123的是100,2546的是1000
int a=1;
while(a<=n){
a=a*10;
}
a=a/10;
if(g(a,n)){//没2019返回0,即不加
return 0;
}else{
return n;//有2019返回数字相加
}
// g(a,n);
}
int main(){
int x,i;
int s=0;
scanf("%d",&x);
for(i=1;i<=x;i++){
s=s+f(i);
}
printf("%d\n",s);
return 0;
}
主要在于获得数的每一位!!!