O número de perguntas de teste do copo de ponte azul treinamento de algoritmo 1 (JAVA)

Descrição do problema
  Insira um número inteiro positivo n e determine quantas vezes o número 1 deve aparecer de 1 a n. Por exemplo, para o número 1123, 1 aparece duas vezes. Por exemplo, 15, de 1 a 15, há um total de 8 1s.
  
Formato de entrada
  um inteiro positivo n
formato de saída
  um inteiro, representando os dados que aparecem 1.
  
Amostra de entrada
15
Amostra de saída
8

O tamanho dos dados e acordo
  n não excede 30000

Solução:
  A primeira reação a esta pergunta é primeiro converter o número em uma string e julgar se cada número na string é a string "1". Se for, adicione um a temp. código mostrado como abaixo:

import java.util.Scanner;

public class Main{
    
    
	public static void main(String[] args) {
    
    
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		scanner.close();
		int temp=0;
		for(int i=1;i<=n;i++) {
    
    //从1循环到n
			String string=i+"";
			for(int j=0;j<string.length();j++) {
    
    //当是两位数及以上时,就要对每位上的数进行判断
				char a=string.charAt(j);	
				boolean status=(a+"").contains("1");
				if(status) {
    
    
					temp++;				
				}
			}
			
		}
		System.out.println(temp);
	}
}

Resultado da avaliação:Resultados da avaliação
  Embora o resultado tenha passado na avaliação, mas sempre achei que meu método não era muito bom, então fui procurar o caminho do marmanjo. Com certeza, o método do chefe é conciso e claro.
Solução:
  O código a seguir serve principalmente para julgar se o número 1 está incluído executando o resto e as operações de arredondamento de 10 para cada número.
  O código é o seguinte (Endereço: https://blog.csdn.net/a1439775520/article/details/104214711):

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,a,b;
        for (int i = 1; i <= n; i++) {
    
    
            //用一个变量代替,如果更改i就会更改循环
            a=i;
            //和水仙花数一样得方法,取最后一位,/10删除最后一位
            while (a!=0){
    
    
                b=a%10;
                if (b==1) count++;
                a/=10;
            }

        }
        System.out.println(count);
        }
}

Resultados da avaliação:
Resultados da avaliação

Acho que você gosta

Origin blog.csdn.net/qq_43692768/article/details/108990096
Recomendado
Clasificación