TÓPICO

otimização de codigo

Prof.MozarSilva perguntou 4 years ago

Caros,

 Acredito que o tempo para executar este problema em javascript, kotlin e java, estao muito pequenos, tive de realizar algumas otimizações para conseguir que eles fossem aceitos pelo juiz online. Caso contrario eu tinha tempo excedido.

 Como acredito que o objetivo nao seja otimização profunda, sugiro aumento do tempo para esses peoblemas, para que a solução padrão seja aceita, nesta linguagens, como é aceita em outras como c,c++,pascal, python, scala e ruby.

 obs: a mesma solução em java8 foi aceita e java7 deu time limit (por isso otimizei e ai foi)  

at, Mozar Baptista da Silva

Lembre de não publicar soluções. Sua publicação pode ser revisada por nossos moderadores.

  • MarcosCouto respondido 4 years ago

    Ranyery , armazene o seu resultado em uma variável do tipo String e depois imprima.

    Declare a variável:

    String numbers = "";

    Armazene o resultado na String:

    while (i < num) {
                numbers += i + " ";
                i++;
            }

    ou

    numbers += i + "\n";

    Imprima o resultado:

    System.out.print(numbers);
  • potigol.github.io respondido 3 years ago

    O valor de n nos testes é menor do que 10000. Como são vários casos de teste, gere a lista de 10000 números uma única vez. Para cada caso de teste pegue os n primeiros números e junte em uma String.

    lista = para i de 1 até 10000 gere i fim
    var n := leia_inteiro
    enquanto n > 0 faça
      escreva lista.pegue(n).junte(" ")
      n := leia_inteiro
    fim
  • Prof.MozarSilva respondido 4 years ago

    vc colocou %n e ao inves de \n. alem disso vc pode retirar o trecho

    if (num == 0) { break; }

     e o input.close(); 

    trocar o System.out.printf("%d" + " ", i); --------------------> System.out.printf("%d ", i);

    System.out.printf("%d" + "%n", i); ---------------------------> System.out.printf("%d\n", i);

    espero ter ajudado e desculpa pela demora :)

  • Ranyery respondido 4 years ago

    Mozar, pode me dar uma luz sobre como otimizar meu código? Estou quebrando a cabeça nesse exercício, já submeti várias vezes e até agora só dá tempo excedido. Me ajuda por favor..

    import java.util.Scanner;

    public static void main(String[] args) {
    
        Scanner input = new Scanner(System.in);
    
        int num = input.nextInt();
    
        do {
            if (num == 0) {
                break;
            }
            int i = 1;
            while (i < num) {
                System.out.printf("%d" + " ", i);
                i++;
            }
            System.out.printf("%d" + "%n", i);
            num = input.nextInt();
        } while (num > 0);
    
        input.close();
    
    }