TOPIC

PROBLEM 1582 - URI Fórum 1.0

URI Online Judge asked 4 years ago

URI Online Judge Fórum 1.0

MOD

This topic was solved and cannot recieve new replies.

  • Unknown replied 3 years ago

    i don't understand the NON_PRIMITIVE logic --so also applied these . But the toolkit shows input : 5 5 0 - is NON_PRIMITIVE,(though (1 ≤ x, y, z ≤ 104)),that means these logic i just submitted is wrong..u have to check if this is NON_PRIMATIVE every time .. So,anyone could help me out ?

    include include include include include

    using namespace std;

    int x,y,z; int k = 0; int s = 0;

    void primitive() { k = 0; int arr[3] = {x,y,z};

    for(int i=0;i<3;i++) { for(int j=i+1;j<3;j++) { if(arr[i]<arr[j]) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } x = arr[0]; y = arr[1]; z = arr[2]; if(pow(x,2) == (pow(y,2)+ pow(z,2))) { k = 1; }

    }

    void non_primitive() { s = 0;

    if(x%2 == 0 && y%2==0 && z%2==0) { x = x/2; y = y/2; z = z/2; } else { s = 1; }

    }

    int main() { while(cin>>x>>y>>z) { primitive();

    if(k == 1) { non_primitive(); if(s == 0) { primitive(); if(k == 1) { cout<<"tripla pitagorica"<<endl; } else { cout<<"tripla pitagorica primitiva"<<endl; } } else { cout<<"tripla pitagorica primitiva"<<endl; } } else { cout<<"tripla"<<endl; } } return 0;

    }

  • Unknown replied 3 years ago

    Getting 10% WA,anyone ?

    include include include include include

    using namespace std;

    int x,y,z; int k = 0; int s = 0;

    void primitive() { k = 0; int arr[3] = {x,y,z};

    for(int i=0;i<3;i++) { for(int j=i+1;j<3;j++) { if(arr[i]<arr[j]) { int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } } x = arr[0]; y = arr[1]; z = arr[2]; if(pow(x,2) == (pow(y,2)+ pow(z,2))) { k = 1; }

    }

    void non_primitive() { x = x/2; y = y/2; z = z/2; }

    int main() { while(cin>>x>>y>>z) { primitive();

    if(k == 1) { non_primitive(); primitive(); if(k == 1) { cout<<"tripla pitagorica"<<endl; } else { cout<<"tripla pitagorica primitiva"<<endl; } } else { cout<<"tripla"<<endl; } } return 0;

    }

  • Ícaro Dantas de Araújo Lima replied 3 years ago

    Alguém pode me apontar o erro? Alguns casos de teste, etc? 30% WA

    #include <iostream>
    #include <iomanip>
    #include <cmath>
    #include <stdio.h>
    #include <stdlib.h>
    #include <cstring>
    
    using namespace std;
    
    bool numero_primo(int a, int b, int c)
    {
        int div=0, eoq=0;
    
        for(int i=2;i<a;i++)
        {
            if (a%i==0)
            {
                div++;
            }
        }
    
        if (div==0)
        {
            eoq=1;
        }
        div=0;
    
        for(int i=2;i<b;i++)
        {
            if (b%i==0)
            {
                div++;
            }
        }
    
        if (div==0)
        {
            eoq=1;
        }
        div=0;
    
        for(int i=2;i<c;i++)
        {
            if (c%i==0)
            {
                div++;
            }
        }
    
        if (div==0)
        {
            eoq=1;
        }
    
        if (eoq==1)
        {
            return 1;
        }
        else
        {
            return 0;
        }
    }
    
    int main()
    {
        int a, b, c;
        while(cin >> a >> b >> c)
        {
            if (a==0 || b==0 || c==0)
            {
                cout << "tripla" << endl;
            }
            else
            {
                if (a*a == b*b + c*c || b*b == a*a + c*c || c*c == a*a + b*b)
                {
                    if (numero_primo(a, b, c)==1)
                    {
                        cout << "tripla pitagorica primitiva" << endl;
                    }
                    else
                    {
                        cout << "tripla pitagorica" << endl;
                    }
                }
                else
                {
                    cout << "tripla" << endl;
                }
            }
        }
        return 0;
    }
  • Ronaldo replied 3 years ago

    WA 40%

    #include<bits/stdc++.h>
    int mdc(int a, int b){
        if (b == 0)
            return a;
        if (b > a)
            return mdc(a, b%a);
        else
            return mdc(b, a%b);
    }
    
    int main()
    {
        int x, y, z;
        while(scanf("%d%d%d", &x, &y, &z) != EOF)
        {
            if(((x * x) == (y * y) + (z * z)) || ((y * y) == (x * x) + (z * z)) || ((z * z) == (y * y) + (x * x)))
            {
                if(mdc(mdc(x,y),z) == 1) printf("tripla pitagorica primitiva\n");
                else printf("tipla pitagorica\n");
            }
            else
            {
                printf("tripla\n");
            }
        }
        return 0;
    }
  • gabriel luna replied 3 years ago

    include

    int MDC(int x,int y) { if(y==0) return x; else return MDC(y,x%y);

    }

    int main() { long long int x,y,z,k,j,maior,maior1,hipotenuza,cateto1,cateto2;

    while(scanf("%lld %lld %lld",&x,&y,&z)!= EOF) { if(x<y) { maior = x; x=y; x=maior; } k = MDC(x,y); if(k<z) { maior1 = k; k=z; z=maior1; } j = MDC(k,z); if(x>y && x>k ) { hipotenuza = x; cateto2 =y; cateto1 = k; } if(y>x && y>k) { hipotenuza = y; cateto2 = x; cateto1 =k; } if(k>x && k>y) { hipotenuza=k; cateto1=x; cateto2 =y; } if(j==1 && hipotenuza*hipotenuza == cateto2*cateto2 + cateto1*cateto1) printf("tripla pitagorica primitiva\n"); if(j!=1 && hipotenuza*hipotenuza == cateto2*cateto2 + cateto1*cateto1) printf("tripla pitagorica\n"); if((hipotenuza*hipotenuza < cateto2*cateto2 + cateto1*cateto1) || (hipotenuza*hipotenuza > cateto2*cateto2 + cateto1*cateto1)) printf("tripla\n"); }

    return 0; }

    estou recebendo 10% WA mas está batendo em todos os casos testes e nao acho o error de jeito algum

  • Gabriel Adriano de Melo replied 3 years ago

    rafaeljhs: O seu programa precisa continuar lendo as entradas até o EOF. Você pode usar um:

    while( scanf("%d %d %d", &a1, &a2, &a3) > 0)

    Pois a função scanf retorna o número de variáveis que ela conseguiu ler ou retorna -1 se for EOF.

    Estou recebendo 10% W.A., mas passei em todos os casos testes, e todas suas permutações. Qual caso teste deve dar problema.

    Resolvido

    O meu problema era no algoritmo de mdc, ele retornava um número diferente de 1 para certos casos quando deveria retornar 1.

  • rafaeljhs replied 4 years ago

    Estou recebendo Wrong answer (100%) :( ñ encontro o erro

  • Abner Samuel P. Palmeira replied 4 years ago

    Eu "acho" que em C não tem != NULL, quando você coloca isso seu código nunca vai parar de executar... Por isso tu tomou TLE.

  • Samuel Silvino replied 4 years ago

    Cara, muuuuitíssimo obrigado! Mas poderia me explicar porque o NULL deixa o código mais lento? Muito obrigado! :)))

  • Abner Samuel P. Palmeira replied 4 years ago

    SamuelSilvino ao invés de usar (scanf("%d%d%d", &num1, &num2, &num3)) != NULL

    Use

    (scanf("%d%d%d", &num1, &num2, &num3)) != EOF

  • Samuel Silvino replied 4 years ago

    [size=150:1g602cs7]Eu estou recebendo time limit exceed, mas não estou usando nenhum tipo de função ou algo semelhante. Como está passando do tempo limite? Alguém pode me ajudar? Muito obrigado![/size:1g602cs7]

    Problema Resolvido! Código excluido!
  • Ramon Honorio replied 4 years ago

    Wrong answer 10%. Simplesmente não consigo achar o problema.

    #include <iostream>
    using namespace std;
    
    int maxdivc(int a, int b);
    
    int main() {
        int x, y, z;
        while(!cin.eof()){
            cin >> x >> y >> z;
    
            int hip,c1,c2;
    
            if(z >= y && z >= x){
                hip = z; 
                c1 = x;
                c2 = y;
            } else if(y >= z && y >= x){ 
                hip = y;
                c1 = x;
                c2 = z;
            } else { 
                hip = x; 
                c1 = y; 
                c2 = z;
            }
    
            int mdc = maxdivc(x, y);
            mdc = maxdivc(mdc, z);
    
            cout << "tripla";
    
            if((hip*hip) == (c1*c1+c2*c2)){
                cout << " pitagorica";
                if(mdc==1)
                    cout << " primitiva";
            }
            cout << endl;
    
        }
        return 0;
    }
    
    int maxdivc(int a, int b){
        int mdc;
        while(b != 0){
            mdc = a % b;
            a = b;
            b = mdc;
        }
        mdc = a;
        return mdc;
    }
  • Leonardo Ortiz replied 4 years ago

    30% W.A. ? :(

    #include <stdio.h>
    
    int mdc(int x, int y);
    
    int main(){
        int x,y,z;
        int a,b,c;
        int aux;
    
        while(scanf("%d %d %d",&x,&y,&z) != EOF){
            aux=mdc(mdc(x,y),z);
    
            if( x >= y && y >= z ){
                a = x;
                b = y;
                c = z;     
            }
            else if( y >= x && x>= z ){
                a = y;
                b = x;
                c = z;
            }
            else if( z >= y && y>= x ){
                a = z;
                b = y;
                c = x;
            }
    
            if(aux == 1 && a*a == (b*b)+(c*c) )
                printf("tripla pitagorica primitiva\n");
            else if(aux != 1 && a*a == (b*b)+(c*c) )
                printf("tripla pitagorica\n");
            else
                printf("tripla\n");
        }
        return 0;
    }
    
    int mdc(int x, int y){
        int z;
        while( x != 0 ){
            z = x; x = y%x;  y = z;
        }
        return y;
    }
  • Gerson Groth replied 4 years ago

    Quando for testar qual é o maior lado, use >= ao invés de apenas >, senão pode acontecer de não entrar em nenhum dos ifs e a variável hip não será inicializada corretamente...

  • Wallace Brito replied 4 years ago

    #include <iostream>
    #include <iomanip>
    #include <vector>
    #include <algorithm>
    #include <cmath>
    using namespace std;
    #define min(m,n) ((m) < (n) ? (m) : (n))
    
    int mdc(int m, int n){
         int a;
         a =  min(abs(m),abs(n));
         while (m%a!= 0||n%a!= 0)
           a--;
         return a;
       }
    
    int main(){
        int x,y,z;
        while(cin>>x>>y>>z){
            int hip,c1,c2;
            if(z>y&& z>x){ hip=z; c1=y;c2=x;}
            else if(y>z&& y>x){ hip=y; c1=z;c2=x;}
            else if(x>z&& x>y){ hip=x; c1=z; c2=y;}
    
            printf("tripla");
        if(hip*hip==(c1*c1+c2*c2)){
            printf(" pitagorica");
            if(mdc(mdc(x,y),z)==1) printf(" primitiva");
        }
        cout<<endl;
        }
    
        return 0;
    }

    Estou recebendo 10% WA mais os casos de teste batem...