蓝桥杯—特别数的和
解决方案:
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; }
主要在于获得数的每一位!!!