tema
[Descripción del problema] A
Xiao Ming le disgusta mucho el número 2, incluidos los que contienen el número 2 en los dígitos. Si los dígitos de un número no contienen el número 2, Xiao Ming lo llama un número limpio.
¿Cuántos números limpios hay entre los enteros del 1 al n?
[Formato de entrada]
La primera línea de entrada contiene un número entero n.
[Formato de salida] La
línea de salida contiene un número entero para indicar la respuesta.
[Entrada de muestra]
30
[Salida de muestra]
18
[Escala de casos de uso de evaluación y convenciones]
Para el 40% de los casos de uso de evaluación, 1 <= n <= 10000.
Para el 80% de los casos de prueba, 1 <= n <= 100000.
Para todos los casos de medición, 1 <= n <= 1000000.
Ideas para resolver problemas
Convierta un número de tipo int en una cadena de tipo String, y luego use el método string contains para determinar si la cadena contiene "2". Si lo tiene, no es un número limpio, de lo contrario, cuente ++.
insinuación
El método contiene de una cadena determina si contiene una cadena y las comillas dobles no se pueden quitar
Código
import java.util.Scanner;
public class Main {
//蓝桥杯要求class命名为Main,且无package
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int count = 0;
for(int i=1;i<=n;i++){
String str = i+"";//转为字符串
if(str.contains("2")){
continue;//不为洁净数continue结束当前for循环
}
count++;//为洁净数则count++
}
System.out.println(count);
}
}