题目:特别数的和:
特别数的和
题目描述
小明对数位中含有 2、0、1、9 的数字很感兴趣(不包括前导 0),在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40,共 28 个,他们的和是 574。
请问,在 1 到 n 中,所有这样的数的和是多少?
输入格式
共一行,包含一个整数 n。
输出格式
共一行,包含一个整数,表示满足条件的数的和。
数据的取值范围:
1≤n≤10000
输入样例:
40
输出样例:
574
解题思路:
可以把字符拆分来进行判断是否满足特别数的条件进行累加
添加if条件来进行判断
注意相同数字不可以加重复,定义一个条件来阻止重复
代码如下:
public static void main(String[] args) {
String[] str = {"2","0","1","9"};
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个在一万以内的数:");
int n = sc.nextInt();
int sum = 0;//累加
int err = 0;//定义一个量避免一个数重复相加
for (int i = 1; i <= n; i++) {
err = 0;
for (int j = 0; j < 4; j++) {
if(String.valueOf(i).contains(str[j]) && err==0){//同时满足条件,避免相重
err = 1;
sum += i;//累加
}
}
}
System.out.println("这个特别的数和为:"+sum);
sc.close();
}
最后输出:
总结:
使用这种把字符拆分来进行判断,要避免重复累加