TOPIC

PROBLEM 1158 - URI Fórum 1.0

URI Online Judge asked 8 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Adriano Pereira replied 4 years ago

    Olá Boa noite alguém por favor poderia me ajudar com esse, exercicio, e me dizer o que há de errado com meu código, pois jah fiz todos os testes possiveis e da certo, porém, qdo eu submeto ele, recebo WA

    package urimatriz;
    
    import java.util.Scanner;
    
    public class UriMatriz {
    
        public static void main(String[] args) {
            Scanner entrada = new Scanner(System.in);
            int N, X, Y, qtd, soma;
            N = entrada.nextInt();
    
            for(int i=0; i<N; i++){
                X = entrada.nextInt();//Inicio
                Y = entrada.nextInt();//Quantidade de impares  Consecutivos
                soma = 0;
                qtd = 0;
                while(qtd<Y){
                    if(X%2==1){
                        qtd++;
                        soma+=X;
                    }
                    X++;
                }
                System.out.println(soma);
            }
    
            //****************************************************
        }
    }
  • André Nascimento replied 4 years ago

    Galera, boa noite.

    Fiz vários testes, inclusive com o toolkit do URI, e em todos os testes meu algoritmo passou. Porém, o URI acusa o seguinte retorno sobre minha submissão: "Wrong answer (10%)". Preciso de uma ajuda para descobrir esse mistério[?]

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
    
        int n, x, y, trava = 0, soma = 0, cont=0;
    
        cin >> n;
    
        while(cin >> x >> y){
    
            soma = 0;
            cont = 0;
    
            for(int i = x; ; i++){
    
                if(y == 0)
                    break;
    
                if(i % 2 == 1){
                    soma += i;
                    cont++;
                }
    
                if(cont == y)
                    break;
            }
    
            cout << soma << endl;
    
            if(soma != 0)
                trava++;
    
            if(trava == n)
                break;
    
        }
    
        return 0;
    }
  • Rachel Cesso replied 4 years ago

    Eu não entendi o problema. Alguem poderia me ajudar.... explicar o q ele esta querendo.....

    sei que parece bobo..... mas realmente não entendi

    #include <stdio.h>
    
    int main()
    {
    int x, y, soma=0;
    int i;
    
    scanf("%d %d", &x, &y);
    
        if(x%2!=0){
          printf("%d", x);}
        else{
           for(i=1; i<=x; i++);
           printf("%d",i);}
    
        return 0;
    }
  • Paulo Iuri Dias replied 4 years ago

    Boa tarde. Enviei o seguinte código mas apresenta wrong answer.

        Scanner ler= new Scanner(System.in);
    
        int n;
    
        n=ler.nextInt();
    
        for(int j=1;j<=n;j++){
    
            int a,b,c,cont=0,soma=0;
    
            a=ler.nextInt();
            do{
                b=ler.nextInt();
            }while(b<=0);
            c=a*b;
            c*=c;
    
            if(a%2==0){
                a+=1;
            }
    
            for(int x=a;x<=c;x++){
                if(x%2!=0){
                    soma+=x;
                    cont++;
                }
    
                if(cont==b){
                    System.out.println(soma);
                    break;
                }
            }
        }

    Oque poderia estar ocasionando o erro?

  • Adriano Pereira replied 4 years ago

    Olá pessoal, sinceramente eu não sei pq o URI não tah aceitando esse código, ja fiz diversos testes, e esta conforme ele pede, porém aparece AW :(

    import java.io.IOException;
    import java.util.Scanner;
    
    /**
     * IMPORTANT: 
     *      O nome da classe deve ser "Main" para que a sua solução execute
     *      Class name must be "Main" for your solution to execute
     *      El nombre de la clase debe ser "Main" para que su solución ejecutar
     */
    public class Main {
    
        public static void main(String[] args) throws IOException {
     Scanner entrada = new Scanner(System.in);
            int N, X, Y, total, soma;
    
            N = entrada.nextInt();
    
            if (N > 0) {
                for (int x = 0; x < N; x++) {
    
                    X = entrada.nextInt();
                    Y = entrada.nextInt();
    
                    total = 0;
                    soma = 0;
    
                    if (X > 0 && Y > 0) {
                        while(total<Y){
                            if(X%2!=0){
                                soma+=X;
                                total++;
                            }
                            X++;
                        }
                    }
                    System.out.println(soma);
                }
            }
            /**
             * Escreva a sua solução aqui
             * Code your solution here
             * Escriba su solución aquí
             */
    
        }
    
    }
  • Erich Rodrigues replied 5 years ago

    O primeiro verifica se o resto da divisão por 2 é igual a 1, e o segundo verifica se o resto da divisão é qualquer valor diferente de 0. E o resto da divisão pode ser negativo em C/C++, execute o seguinte código para verificar isso:

    #include<iostream>
    using namespace std;
    
    int main(){
        cout << -3 % 2;
        return 0;
    }
    MOD
  • Romulo Diego da Silva Gomes replied 5 years ago

    Olá boa tarde. Amigo, eu estava exatamente com esse problema. Rodei com a alteração que você indicou e funcionou. Agora eu pergunto, qual a diferença? Por que o URI não aceitou na outra forma? Abraço e obrigado.

  • Romulo Diego da Silva Gomes replied 5 years ago

    Galera, estou tomando WA 10%. Já revisei e sai testando com exemplo aqui do fórum, e passou em todos. Alguém pode ajudar?

    #include <iostream>
    
    int main() {
    
        int x=0,soma=0,y=0,n=0;
        scanf("%d",&n);
    
        for(int i =0;i<n;i++){
            scanf("%d %d",&x,&y);   
            soma=0;
            while(y>0){
    
                if(x%2==1){
                    soma = soma+x;
                    y--;
                }
                x++;
            }
            printf("%d\n", soma);   
        }   
    }
  • Mauricio Barbosa replied 6 years ago

    Alguém sabe o motivo de eu está recebendo WA 20%?

    Aparentemente está correto. Alterei o tipo das variáveis para aceitar valores maiores mas não funcionou.

    #include <iostream>
    
    using namespace std;
    
    long sn(long a1, long n) {
        long an = a1 + (n-1)*2;
        return (a1+an) * n/2;
    }
    
    int main() {
        long n, x, y;
    
        cin >> n;
    
        while (n--) {
            cin >> x >> y;
            x = (x%2 == 0) ? x+1 : x;
            cout << sn(x,y) << "\n";
        }
    
        return 0;
    }
  • Luc replied 6 years ago

    Está dizendo que está errado 10%, alguém consegue achar o erro?

    #include <stdio.h>
    
    int main() {
        int n,x,y,soma;
        scanf("%d",&n);
        for(int i=0;i<n;i++){
    
            scanf("%d",&x);
            scanf("%d",&y);
    
            if ( x % 2 == 0 ){
                x++;
                for ( int j=0;j<y;j++){
                    soma += x;
                    x += 2;
                }
            } else {
                for ( int l=0;l<y;l++){
                    soma += x;
                    x += 2;
                }
            }
            printf("%d\n",soma);
            soma = 0;
        }
    }
  • Erich Rodrigues replied 6 years ago

    Porque não está zerando corretamente todas as variáveis usadas.

    MOD
  • Santiago Soares replied 6 years ago

    Por que a partir da segunda entrada a resposta fica errada?

    Resolvido.
  • Mateus Sereno replied 6 years ago

    Por algum motivo bizarro agora deu. Valeu aí!

  • Erich Rodrigues replied 6 years ago

    Estranho, submeti o seu código aqui e deu certo, tem certeza que submeteu esse código?

    MOD
  • Mateus Sereno replied 6 years ago

    Apaguei a mensagem, já deu certo. Vlw!

  • Germano Martins de Souza replied 6 years ago

    De nada, já está marcado como resolvido.

  • Hélio de Meira Lins Neto replied 6 years ago

    Obrigado, Germano! Era isso mesmo! Acho que seria legal vc editar seu código para retirar o código semi-respondido.

    Abraço!

  • Germano Martins de Souza replied 6 years ago

    Também tentei resolver esse problema usando PA, mas apresentou WA, percebi que em alguns casos havia overflow. Teste a seguinte entrada e veja o resultado:

    1 
    1073741821 2

    Isso ocorre porque ao realizar uma operação entre dois inteiros, o resultado será do tipo int. Veja um passo a passo do que está acontecendo(considerando o caso de teste acima): (2x+2(y-1))y/2 21073741821+2(y-1))y/2 = 2147483642 + 2(y-1))y/2 2147483642+2(2-1)y/2 = 2147483644y/2 2147483644y/2 = 4294967288 -->overflow aqui

    Para contornar a situação você pode substituir a fórmula: (2x+2(y-1))y/2 por: (2.0x+2.0(y-1))y/2.0

  • Hélio de Meira Lins Neto replied 6 years ago

    Rapaz, já testei esse código com várias entradas e sempre bate com o toolkit, mas estou tomando WA em 20% dos casos. Alguém sabe o que está ocorrendo?

    #include <iostream>
    
    Dúvida respondida. Grato.

    A soma foi feita usando a soma de uma progressão aritmética.

  • Gerson Groth replied 7 years ago

    Teste com essa entrada

    2
    -4 3
    -11 2
1 of 2