TOPIC
PROBLEM 1120 - URI Fórum 1.0
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.
-
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...
-
Felipe Derkian replied 4 years ago
MODalgué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); } }
-
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); } } }