小明非常不喜欢包含2的数字,例如2,12,22,21等等。不包含2的
数字小明认为是洁净数,编程统计1-10000之间有多少个洁净数。
import java.util.Scanner;
public class 洁净数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
int count = 0;
for (int i = 1; i <= n; i++) {
char[] array = String.valueOf(i).toCharArray();
int flag = 1;
for (char j : array) {
if (j == '2') {
flag = 0;
break;
}
}
if (flag == 1) {
count++;
}
}
System.out.println(count);
}
}
public static void main(String[] args) {
int count = 0;
for (int i = 1; i <= 1000; i++) {
if(String.valueOf(i).contains("2")){
count ++;
}
}
System.out.println(count);
}
public static void main(String[] args) {
int n = 10000;
//n的位数
int length = String.valueOf(n).length();
int count = (int)Matn.pow(9,length-1);
System.out.println("洁净数: "+count);
}
想不出太好,写了个一般的:
int n = 10000;
int has2Cnt = 0;
Set<Integer> set = new HashSet<>();
//结尾是2,或者除以10以后属于不洁,那这个数字不洁
for(int i = 1; i <= n; i++){
if(set.contains(i/10) || i%10==2){
has2Cnt ++;
set.add(i);
}
}
System.out.println(n-has2Cnt);