**【问题描述】**小明对数位中含有2、0、1、9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1、2、9、10至32、39和40,共28个,他们的和是574。请问,在1到n中,所有这样的数的和是多少?
**【输入格式】**输入一行包含两个整数n。
**【输出格式】**输出一行,包含一个整数,表示满足条件的数的和。
**【样例输入】**40
**【样例输出】**574
个人分析:这个题目麻烦在于如果这四个数在一个数字的中间,例如323这种,不好识别或者识别很麻烦。不过如果你会String的一种方法contains(),那就简单多了。这还需要把整形转换为字符串类型。不多说上代码。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] aa=new int[n+1];
int he=0;//和
for(int i=1;i<=n;i++){
String s=Integer.toString(i);//把整形转换为字符串型
if(s.contains("1")||s.contains("2")||s.contains("0")||s.contains("9"))//这是判断s字符串中是否包含括号里的字符
he+=i;
}
System.out.println(he);
}
}