问题描述
小明非常不喜欢数字 2,包括那些数位上包含数字 2 的数。如果一个数的数位不包含数字 2,小明将它称为洁净数。
请问在整数 1 至 n 中,洁净数有多少个?
输入格式
输入的第一行包含一个整数 n。
输出格式
输出一行包含一个整数,表示答案。
样例输入
30
样例输出
18
评测用例规模与约定
对于 40% 的评测用例,1 <= n <= 10000。
对于 80% 的评测用例,1 <= n <= 100000。
对于所有评测用例,1 <= n <= 1000000。
思路:刚开始本来想用split一个一个拆出来去判断比较,但是那么写会很麻烦,就用了while,这道题目其实就是类似水仙花的一道题,只要是2就重新循环,最后++即可。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int ans = 0;
A: for (int i = 1; i <= n; i++) { // A:开始循环
int x = i; // x替换i
while (x != 0) { // x不等于0,进入while循环
int t = x % 10; // 取位
if (t == 2) { // 判断是2
continue A; // 跳转A,继续循环
}
x /= 10; // 取每一位
}
ans++; // 结果
}
System.out.println(ans); // 输出
}
}