Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

Ajuda em desafio

$
0
0

@Leomomente escreveu:

Galera, estou fazendo uns desafios de java e estou travado nesse já há dois dias, alguém pode dar uma luz aí?

Aqui está meu código:

import java.util.*;
import java.io.*;

class Solution{
  public static void main(String []argh){
    Scanner in = new Scanner(System.in);
    
    int t = in.nextInt(); in.nextLine();    //Problema do Scanner
    int[] a, b, n;
    String[] lines = new String[t];
    
    a = b = n = new int[t];
    
    //Prepara as entradas
    for(int i=0; i<t; i++){
      lines[i] = in.nextLine();
      String[] parts = lines[i].split(" ");
      try{
        a[i] = Integer.valueOf(parts[0]);
        System.out.print(a[i]+" ");
        b[i] = Integer.valueOf(parts[1]);
        System.out.print(b[i]+" ");
        n[i] = Integer.valueOf(parts[2]);
        System.out.println(n[i]+" ");
      }catch(Exception e){
        System.out.print(e.getMessage());
      }
    }

    //Para cada linha, repita a enquanto
    //houver somas a serem feitas
    for(int i=0; i<t; i++){
      int somaAtual = 0;                  //Atualiza o 'a' para cada linha
      int count = 1;                  //Multiplicador = 1 2 4 8 ..
      int aux = 1;                    //Iterador da soma atual
      do{
        for(int j=0; j<aux; j++){
          somaAtual += (count*b[i]);  //Soma atual recebe multiplicador * 'b' atual
          count*=2;
          if(j==(aux-1)){ 
            somaAtual += a[i];
            System.out.print((somaAtual)+" ");
            //Próxima soma da linha
            somaAtual = 0;            //Atualiza 'a' para nova soma
            aux++;                    //Indica que foi realizado mais uma soma 
            count = 1;                //Realoca multiplicador
            break;
          }          
        } 
      }while(aux<=n[i]);               //Enquanto soma atual < total de somas atual
      
      //Próxima linha
      System.out.println("");
    }//end for

    in.close();
    
  }
}

Ele deveria fazer o seguinte:

Se a entrada fosse essa

2
0 2 10
5 3 5

Então a saída seria essa

2 6 14 30 62 126 254 510 1022 2046
8 14 26 50 98

Mas a saída do meu código é essa

20 40 80 160 320 640 1280 2560 5120 10240
10 20 40 80 160

Eu não estou entendendo o porquê!

Mensagens: 3

Participantes: 2

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>