TOPIC

WA 5% Teorema de Pitagoras

denoyr asked 1 year ago

I'm getting 5% WA in my code, I tested so many cases but none fails, do someone know what is wrong? Meu codigo ta pegando 5% WA, eu testei inumeros casos e nenhum deles falha, alguem sabe qual o problema?

var input = require('fs').readFileSync('/dev/stdin', 'utf8');
var lines = input.split('\n');

function mdc(a,b){
    a = Math.abs(a), b = Math.abs(b);
    if(a === 0){
        return b;
    }
    if(b === 0){
        return a;
    }
    if(a > b){
        return mdc(a-b,b);
    } else {
        return mdc(a,b-a);
    }
}
////////////////////////////////////
var x = lines.shift();
while(x !== undefined){
    x = x.trim();
    x = x.split(' ');
    x[0] = Number(x[0]), x[1] = Number(x[1]), x[2] = Number(x[2]);
    x.sort((a,b) => a-b);
    if(x[2]*x[2] === x[1]*x[1] + x[0]*x[0]){
        if(mdc(x[2],mdc(x[0],x[1])) === 1){
            console.log(`tripla pitagorica primitiva`);
        } else {
            console.log(`tripla pitagorica`);
        }
    } else {
        console.log(`tripla`);
    }
    x = lines.shift();
}

Remember not post solutions. Your post may be reviewed by our moderators.

  • thiagogentil replied 8 months ago

    Olá, Denoyr! Eu estava enfrentando um problema semelhante no meu código e recebi o mesmo erro " WA de 5%", Depois de examinar seu código, acredito que seja o mesmo problema que o meu.

    O problema está na forma como o código lê a entrada. Quando você divide a entrada usando split('\n'), se houver uma linha em branco no final, isso pode criar uma saída adicional que não deveria estar lá. Isso provavelmente é a causa do erro de 5% WA.

    No meu código, eu consegui corrigir o problema adicionando a seguinte linha dentro do loop:

    if (line.trim() === '') return;

    Isso garante que qualquer linha em branco seja ignorada e não processada. Tente adicionar essa verificação no seu código e veja se isso resolve o problema.

    Além disso, talvez seja útil mudar a implementação da função mdc para usar o algoritmo de Euclides, que pode ser mais eficiente e evitar o erro de Time limit exceeded.

    Eu espero que isso ajude! Se você tiver mais perguntas, estou aqui para ajudar!