TOPIC

PROBLEM 1150 - URI Fórum 1.0

URI Online Judge asked 6 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • João replied 3 years ago

    O caso de teste fornecido é assim: O primeiro valor lido é o 3 (valor de X). Depois é o 1 (valor de Z), como Z é menor ou igual a X, a leitura é feita novamente. O novo valor de Z é 20. O exercício pede a quantidade de inteiros consecutivos (começando em X) tal que a soma ultrapasse Z o mínimo possível. 3 + 4 = 7 (não ultrapassou Z ainda, soma mais) 3 + 4 + 5 = 12 3 + 4 + 5 + 6 = 18 3 + 4 + 5 + 6 + 7 = 25 (ultrapassou Z)

    5 valores consecutivos foram somados para ultrapassar Z. Você pode usar o toolkit para testar outros casos.

  • Caroline Gomes replied 2 years ago

    O URI dá wrong answer. Alguém poderia me dizer, por favor, o que há de errado?

    import java.util.Scanner;
    public class Main{
        public static void main(String[]args){
            Scanner sc=new Scanner(System.in);
    
            int X=sc.nextInt(), Z=sc.nextInt(), soma=0, y=0;
    
            while(Z<X){
                Z=sc.nextInt();}
    
            while(soma<Z){
                soma=soma+X; // -5 -9 -12 -14 -15 -15 -14 -12 -9 -5 0
                y=y+1; // 1 2 3 4 5 6 7 8 9 10 11
                X=X+1; // -4 -3 -2 -1 0 1 2 3 4 5
            }
            System.out.println(y);
        }
    }
  • Rafael Wruck replied 3 years ago

    Problema confuso. Alguém tem outros exemplos de teste? Porque o que foi fornecido também é estranho.

  • Cristhian Bonilha replied 5 years ago

    Ter um caso onde seu algoritmo funciona não necessariamente significa que ele será aceito. Ter um caso onde seu algoritmo não funciona significa que ele não será aceito.

    A ideia do exercício é somar valores em sequência, iniciando em X, para que a soma ultrapasse Z.

    Você deve iniciar somando X e (X+1). Se X+(X+1) é maior que Z, pare. Senão, continue e some (X+2). E por aí vai.

  • Gustavo Marini replied 2 years ago

    O enunciado informa que Z deve ser re-lido até que ele seja maior que X, e seu código não está levando em conta quando X for igual a Z. Para corrigir isso simplesmente modifique seu laço para:

    while(Z<=X){
        Z=sc.nextInt();}
    MOD
  • Rafael Wruck replied 3 years ago

    Resolvido Valeu Yuri

  • Unknown replied 3 years ago

    Rola dar um help aqui alguém? Alguns testes ok, outros o contador erra por um, to meio perdido...

    x = int(input())
    z = int(input())
    
    if x < z :
        soma = x
        if x < 0 and z < 0 :
            cont = -1
        else: 
            cont = 0
        while soma <= z+1 :
            soma += x
            x+=1
            cont+=1
    else :
        while z <= x :
              z = int(input())
              soma = 0
              cont = 0
              while soma <= z+1 :
                      soma += x
                      x+=1
                      cont+=1
    
    print(cont)
  • [QT-24] Herbert da Silva Ferreira replied 3 years ago

    O Toolkit está apresentando valores errados para vários testes. A lógica do problema é confusa. Poderia colocar mais testes de exemplo para facilitar a compreensão. Meu programa:

    10 e 888 = 9 2 100 = 7

    TollKit

    10 e 888 = 34 2 100 = 13

    Minha solução foi aceita por algum motivo, mais algo está errado. Poderiam resolver isso? Grato!

  • Camila Moncorvo replied 3 years ago

    O que há de errado?

    int x, z=x-1, c=1, s=x;
    
        scanf("%d %d", &x, &z);
        if(x>=z){
    
            while(x>=z){
    
              scanf("%d", &z);
    
            }
        }
        while(s<=z){
            s+=x+1;
            c++;
            x++;
        }
    
        printf("%d\n", c);
  • joaumgabriel_ replied 4 years ago

    Alguém poderia por gentileza providenciar casos de teste, minha solução simplesmente não passa e já criei vários casos de teste...

    Could anyone please provide test cases, my solution just won't pass and I already created a lot of test cases...

  • Jony ACN replied 4 years ago

    o que a de errado .. os testes estao coretos.

    include

    int main()

    { int x = 0, y = 0, cont = 1, x2 ;

    scanf("%d", &x); scanf("%d", &y); x2 = x + 1; while ( y < x) {scanf("%d", &y); }

    while (y >= x) { x = x +x2 ; x2 = x2 + 1 ; cont = cont +1; } printf("%d\n", cont);

    return 0;

    }

  • David Joshua replied 4 years ago

    Olá, estou recebendo WA, alguém poderia dizer onde estou errando?

    #include <cstdio>
    
    int main()
    {
        int x, z;
        scanf("%d", &x);
        do
        {
             scanf("%d", &z);
        }
        while (z < x);
        int i = x + 1, count = 1;
        while (x <= z)
        {
            count++;
            x += i;
            i++;
        }
        printf("%d\n", count);
        return 0;
    }
  • Gerson Groth replied 4 years ago

    No teu else, você incrementa o valor de X mesmo se o Z não é válido, alterando o valor original do X e podendo gerar resposta incorreta.

  • Elder Vivot Dias replied 4 years ago

    Testo todas as condições e dá certo, mas continua dando WA, alguém poderia ajudar?

    #include<stdio.h>
    
    int main()
    {
        int X, Z, Soma, Contador;
    
        scanf("%d %d",&X, &Z);
    
        if(X < Z)
        {
             Soma = 0;
             Contador = 0;
             while(Soma <= Z +1)
             {
                      Soma = Soma + X;
                      X++;
                      Contador++;
              }
        }
    
        else
        {
            while(Z <= X)
            {
                    scanf("%d", &Z);
                    Soma = 0;
                    Contador = 0;
                    while(Soma <= Z +1)
                    {
                                Soma = Soma + X;
                                X++;
                                Contador++;
                    }
            }
        }
        printf("%d\n", Contador);
    
    system("PAUSE");
        return(0);
    }
  • Erich Rodrigues replied 5 years ago

    Qual é o valor de t no início? Além disso você não pode usar o comando system().

    MOD
  • Gustavo Cesar Leite de Oliveira Santos replied 5 years ago

    O que há de errado no meu código? As saídas estão iguais as da toolkit

    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    
    int main(int argc, char *argv[]) {
    
        int X, Z, S, i, t;
    
        S=0;
    
        scanf("%d", &X);
    
        Z=X;
    
        if(X>0){
        for(i=0; X >= Z; i++){
    
            scanf("%d", &Z);
    
        }
    
        for(i=X; S < Z; i++){
    
            S=S+i;
    
            t++;
        }
    
        printf("%d\n", t);
    }
    
        else if(X<0){
        for(i=0; X >= Z; i++){
    
            scanf("%d", &Z);
    
        }
        if(Z<0){
        Z=abs(Z);
    
        for(i=X; S < Z; i++){
    
            S=S+i;
    
            t++;
        }
        t=t-1;
    }
        else if(Z>0){
            Z=abs(Z);
    
        for(i=X; S < Z; i++){
    
            S=S+i;
    
            t++;
        }
    
        }
    
        printf("%d\n", t);
    }
    
        system("PAUSE");
        return 0;
    }
  • André Queiroz replied 5 years ago

    Tem como resolver esse problema usando PA? Sinto que dá pra fazer, mas não sei como. Eu tenho r = 1, a(1) = x, S(n) = z, mas não consigo isolar a(n) nem n nas equações restantes.

  • Cristhian Bonilha replied 5 years ago

    You can only accept values for N that are greater than X. You are accepting values that are equal.

    Also, you have to sum the minimum number of values, in a way that the sum becomes greater than X as minimum as possible. That means, maybe you only need to sum two, or three values.

  • phuc popping replied 5 years ago

    What's wrong with my code?

    #include <iostream>
    using namespace std;
    int X,N,n=1;
    int main()
    {
       cin >> X >> N;
        while(N < X)
            {
                cin >> N;
            }
    
         for(int i=X;X<=N;i++)
            {
                X+=i;
                n++;
            }
        cout << n <<endl;
        return 0;
    }
  • Gustavo Mendonça replied 5 years ago

    Mas se você fizer o teste digitando 21 e 30 ele da a resposta certa que é 2. Não entendo o que há de errado no meu código.

1 of 2