TOPIC

PROBLEM 1120 - URI Fórum 1.0

URI Online Judge asked 7 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Jadson José Monteiro Oliveira replied 5 years ago

    israel_ruas, eu não cheguei a compilar e testar o seu código, mas acredito que o problema esteja no momento em que você transforma a string em double:

    zero = Double.parseDouble(novo);

    Evite realizar esse tratamento utilizando o double, pois a capacidade do mesmo é de 64 bits e o limite do problema vai até 10¹⁰⁰ (101 dígitos). Enfim, você pode realizar o tratamento sem o uso do double, somente com a string, utilizando isso:

    variavel.replaceFirst("0*", "")

    Isso irá substituir todos os 0's do início da string.

  • Vinicius Dalsasso replied 5 years ago

    priscila, se eu fosse você receberia o digito separado da linha. Se você executar o código e ir executando as entradas deste jeito:

    5
    500000
    3
    123456

    As saidas vão sair assim:

    0
    0
    0
    3456

    Acho que o URI não executa as entradas separadas com um espaço (como aparece na página do problema). Eu alterei o seu código e recebi o digito como um char (separado do vetor linha) e o problema recebeu um accepted.

    O toolkit é uma ferramenta para testar as entradas esperadas. Na página do problema, procure pelo menu "Toolkit". Lá você digita algumas entradas para o problema e vai retornar a saída correta para o caso de teste. Aí você confere com o seu código se as suas saídas conferem com as saídas do toolkit.

  • Domitila Crispim Pietropaolo replied 5 years ago

    Obrigada :3 resolvi

  • Cristhian Bonilha replied 7 years ago

    Nada como alguns casos de teste aleatórios:

    2 77314742728684103377022523
    3 83546527400223563532133331021132033215340630333522323033
    3 65242333544353047383277172632372733300368112236334
    3 335386473336532363333626077723607233236633233333313
    5 42752585055565555427223805555881585
    5 45464723554505521863553216550552055355555587832875750545171537525126205036856125554645111311565
    6 5025061766687035540466526210747141862577086887638640066566836346623657246871224366
    9 892922022700286633926601923
    1 3100510510151838056110311081213067141561711116516271315530515738368458041101318474561671077
    4 4444358427014
    3 360638083535631
    5 845865375457157584654688254558636515578850448256072325525
    1 835101278485654111381621161264202511657101256218331050112541037511586
    6 563666463646262254410550873637026375687032641
    8 5568682374551855832282658835885818807018765882381781218808188058188788751808888108
    7 7677573287734722347575354767717676576074678768707475530777173077511552
    2 2121042674622582220287
    9 86417299633672977991270855617064801692843531069221096909750938
    9 509953779943911098394958702974999612039979446880648625899799282413447899649292986567192
    1 7113810131153211152864611317212115171311161011211101111433216111113513

    Se precisar de mais: https://github.com/crbonilha/codes/blob ... evisao.cpp

  • Gerson Groth replied 7 years ago

    Fiz uns casos de teste aqui. Espero que ajudem

    Entrada:

    5 50000001
    3 31234563
    9 909
    9 90009
    9 9001009
    1 1001111
    0 0

    Saída:

    1
    12456
    0
    0
    100
    0

    Qualquer coisa pode também postar teu código, que alguém poderá identificar o problema...

  • Unknown replied 4 years ago

    Não passou em algumas entradas do uDebug.

  • Felipe Derkian replied 4 years ago

    alguém pode me ajudar ? meus testes dao tudo certo.. e nao esta passando

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void TATA(char a, char b[]) {
        char c[4000];
        int i,j=0;
    
        for(i=0; i<strlen(b); i++) {
            if(a!=b[i]) {
    
                c[j] = b[i];
    
                j++;
            }
        }
        c[j]='\0';
        getchar();
        if(strcmp(c, "23454324543423")==0) {
            printf("%s\n",c);
    
        } else {
            unsigned int resp =  atoi(c);
    
            printf("%u\n",resp);
    
        }
    
    }
    
    int main() {
    
        char a, b[4000] ;
    
        while(scanf("%c %s",&a,&b)) {
            if(a=='0' && b[0]=='0') {
                break;
            }
    
            TATA(a, b);
    
        }
    
    }
    MOD
  • Unknown replied 4 years ago

    O valor máximo para um Int64 é inferior à vigésima potência de 10, não suportando então o limite enunciado:

                         [size=100:phzgo0j0]100 [/size:phzgo0j0][size=150:phzgo0j0]1 ≤ N < 10[/size:phzgo0j0]

    Sugiro repensar o algoritmo, e testar com os casos do uDebug.

  • Rafael Nunes replied 4 years ago

    Alguem pode me ajudar? estou tendo RuntimeError...

    Ele passou em todos os testes propostos.

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;

    namespace Problemas { class Program { static void Main(string[] args) { Int64 d, n, v; String linha; String [] linha2;

            do
            {   
                linha = Console.ReadLine();
    
                linha2 = linha.Split(' ');
    
                d = Convert.ToInt64(linha2[0]);
                n = Convert.ToInt64(linha2[1]);
    
                if (d == 0 && n == 0)
                {
                    break;
                }
    
                if (n.ToString().Replace(d.ToString(), "") == "")
                {
                    v = 0;
                }
                else
                { 
                    v = Convert.ToInt64(n.ToString().Replace(d.ToString(), ""));
                }
    
                Console.WriteLine(v);
            } while (d != 0 && n != 0);
    
        }
    }

    }

  • Sérgio Netto de Araújo Jr replied 4 years ago

    WA 100%... Eu não consegui fazer o teste de 9 99999999991999999... Não achei tipo de variável int que caiba tanto número... De resto está funcionando. Outro ponto: na hora de comparar tem alguma coisa melhor do que tirar 48 pra ter o numero e não o ASCII? -> if ((int)contrato[i]-48!=d){... Acho que o Judge podia colocar um aviso da submissão errada dizendo o que não aceitou...

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main()
    {
        int d, i, cont=0;
        long int n;
        do{
            scanf("%d %li",&d, &n);
            if((d==0)||(n==0)) break;
            char contrato[1000000];
            char novo[1000000];
            snprintf(contrato, 1000000, "%li", n);
            for(i=0;i<strlen(contrato);i++){
                if ((int)contrato[i]-48!=d){
                    novo[cont]=contrato[i];
                    cont++;
                }
            }
            printf("%s\n",novo);
            strcpy(novo, "" );
            cont=0;
        }while ((d!=0)||(n!=0));
        return 0;
    
    }
  • Vitor Cordeiro de Carvalho replied 4 years ago

    Alguem poderia me ajudar? Fiz todos os testes possíveis para esse código, e todos passam, mas aqui está me dando 100% wrong answer, help pls!!!

    Scanner sc = new Scanner(System.in);
            String enter = sc.nextLine();
            while (!enter.equalsIgnoreCase("0 0")) {
                if (!enter.equalsIgnoreCase("0 0")) {
                    String first = enter.substring(0,1);
                    String numb = enter.substring(2, (enter.length()));
                    if (Double.parseDouble(first) <= 9 && Double.parseDouble(first)>= 0) {
                        numb = numb.replaceAll(first, "");
                    }
                    if (!numb.equalsIgnoreCase("") && Double.parseDouble(numb) != 0.0d) {
                        if (numb.charAt(0) == '0') {
                            for (int i = 0; i < numb.length(); i++) {
                                if (numb.charAt(i) == '0') {
                                    numb = numb.replace('0', 'a');
                                }
                            }
                        }
                        numb = numb.replaceAll("a","");
                        System.out.println(numb);
                    }else {
                    System.out.println("0");    
                    }
                    enter = sc.nextLine();
                } else {
                    System.exit(1);
                }
    
            }
  • Matheus Leão replied 5 years ago

    A entrada tem vários casos com dois números. O primeiro é D, e representa o dígito que deve ser eliminado. O segundo é N, e é o número do qual o dígito D deve ser retirado. Então se D é 1 e N é 1112111, o novo número é 2, pois é 1112111 tirando os 1s. O cuidado deve ser com casos em que existe o número 0.

    Sim.

  • Rodrigo Melo replied 5 years ago

    Boa madrugada ! =)

    Podem me ajudar? Meu código está passando em todos os casos de teste, e mesmo assim dá WA 10% =/

    import java.util.Scanner;
    /*
     * @author Rodrigo Melo
     */
    public class Main {
    
        public static void main(String[] args) {
         Scanner leitor = new Scanner(System.in);
         String comparador1;
         String comparador2;
         char arrayComp1;
         char [] arrayComp2;
         char [] arrayFinal;
    
         while(true){
             comparador1=leitor.next();
             comparador2=leitor.next();
             if(comparador1.equals("0") && comparador2.equals("0"))break;
             int contador=0;
             int contadorExtra=0;
             int contaZero=0;
             int contaIgual=0;
             int j=0;
             arrayComp1=comparador1.charAt(0);
             arrayComp2=comparador2.toCharArray();
    
             for(int i=0; i<arrayComp2.length; i++){
                 if(arrayComp1==arrayComp2[i]){
                     contador+=1;
                 }
             }
             arrayFinal= new char[arrayComp2.length-contador];
    
             for(int i=0; i<arrayComp2.length; i++){
                 if(arrayComp1!=arrayComp2[i]){
                     arrayFinal[j]=arrayComp2[i];
                     j+=1;
                 }
                 else contaIgual+=1;
             }
             for(int i=0; i<arrayFinal.length; i++){
                 if(arrayFinal[i]=='0'){
                     contaZero+=1;
                 }
             }
    
            if(contaZero==arrayFinal.length || contaIgual==arrayFinal.length){
                System.out.println(0); 
            }
            else if(true){
            while(arrayFinal[0]=='0'){
                for(int k=0;k<arrayFinal.length; k++){
                    if(k==arrayFinal.length-1)break;
                    arrayFinal[k]=arrayFinal[k+1];
                }
                contadorExtra+=1;
                arrayFinal[arrayFinal.length-contadorExtra]='a';
            }
            for(int i=0; i<arrayFinal.length; i++){
                if(arrayFinal[i]!='a'){
                System.out.printf("%s",arrayFinal[i]);
            }
            }
            System.out.println();
            }
            }
        }         
    }
  • Douglas Athos replied 5 years ago

    Meu código está correto para todos os casos de teste, mas mesmo assim continua aparecendo wrong answer, poderiam me ajudar?

    import java.util.Scanner;
    
    public class Main {
    
        public static void main(String[] args) {
            Scanner teclado = new Scanner(System.in);
            char retirar;
            while (teclado.hasNext()) {
                retirar = teclado.next().charAt(0);
                String original = teclado.next();
                System.out.println(corrigir(retirar, original));
                if (retirar == '0' && original.equals("0")) {
                    break;
                }
            }
        }
        public static String corrigir(char a, String b) {
            char[] sequencia = b.toCharArray();
            int ocorrencias = 0;
            for (int i = 0; i < sequencia.length; i++) {
                if (a == sequencia[i]) {
                    sequencia[i] = '#';
                    ocorrencias++;
                }
            }
            char[] sequencia2 = new char[sequencia.length - ocorrencias];
            int atual = 0;
            for (int j = 0; j < sequencia.length; j++) {
                if (sequencia[j] != '#') {
                    sequencia2[atual] = sequencia[j];
                    atual++;
                } else {
                    if (ocorrencias == sequencia.length) {
                        return "0";
                    }
                }
            }
            sequencia=null;
            ocorrencias = 0;
            int cont = 0;
            while (sequencia2[ocorrencias] == '0') {
                ocorrencias++;
                if (ocorrencias == sequencia2.length) {
                    return "0";
                }
                if (sequencia2[ocorrencias] != '0') {
                    char[] seqfinal = new char[sequencia2.length - ocorrencias];
                    for (int l = ocorrencias; l < sequencia2.length; l++) {
                        seqfinal[cont] = sequencia2[l];
                        cont++;
                    }
                    String corrigido = new String(seqfinal);
                    return corrigido;
                }
            }
            String corrigido=new String(sequencia2);
            return corrigido;
        }
    }
  • Mateus Ferreira replied 5 years ago

    Se para o caso de teste descrito no problema 9 23454324543423 a saída é o próprio número pois não existe o 9 na sequência. então para o teste 0 123456789 a saída deveria ser também a original, mas não é o que acontece, o resultado é o encerramento do programa. o mesmo ocorre no teste 0 1200012 neste teste eu penso que deveria imprimir 1212, mas o resultado também é o encerramento do programa. Então quer dizer que a tecla problemática nunca poderá ser o "zero"? pois a tecla zero é reservada para encerrar o programa?

  • Taynara Paulino replied 5 years ago

    Alguém poderia me explicar esse trecho do enunciado?

    A entrada consiste de diversos casos de teste, cada um em uma linha. Cada linha contém dois inteiros D e N (1 ≤ D ≤ 9, 1 ≤ N < 10100 ).

  • Marcos Cardoso replied 5 years ago

    Olá pessoal, estou recebendo W.A. (10%)... Alguém poderia me ajudar nesse problema... olha o código ai...

    Scanner read = new Scanner(System.in);
            String error;
            String[] numbers;
            boolean tudoZero, achouNum;
            while (read.hasNext()) {
                int cont = 0;
                tudoZero = false;
                achouNum = false;
                error = read.next();
                numbers = read.next().split("");
                if (error.equals("0") && numbers[0].equals("0")
                        && numbers.length == 1) {
                    break;
                }
    
                for (int i = 0; i < numbers.length; i++) {
                    if (!numbers[i].equals(error)) {
                        if (numbers[i].equals("0") && !achouNum) {
                            tudoZero = true;
                        } else {
                            tudoZero = false;
                            achouNum = true;
                            System.out.print(numbers[i]);
                        }
                    } else {
                        cont++;
                    }
                }
                if (tudoZero || cont == numbers.length) {
                    System.out.print(0);
                }
                System.out.println();
            }

    Agradeço...

  • Matheus Leão replied 5 years ago

    Hey man, calm down, sometimes guys are busy :) . Try this and you will see your code fails

    2 2
  • einstine replied 5 years ago

    What the problem Can anyon help? Do anyeone help in this judge ???? I dont think so. Since I've joined and posted on the forum got no response....

    import java.io.*;
    import java.math.BigInteger;
    public class Main {
    
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            String s;
            while(true)
            {
              s=br.readLine();
              String []ara = s.split(" ");
              String n = ara[0];
              String c=ara[1];
              if("0".equals(c)&&"0".equals(n))
              {
                  break;
              }
              c= c.replaceAll(n, "");
    
                BigInteger B = new BigInteger(c);
    
               System.out.println(B);
    
            }       
        }
    }
  • Marcos Cardoso replied 5 years ago

    Dos que receberam 100% W.A o que fizeram para resolver?

1 of 3