Last active
February 1, 2017 04:22
-
-
Save marcoscastro/ace8952cc5bf87646a28561e2d350f4a to your computer and use it in GitHub Desktop.
Problema URI 1582 - pitagoras e MDC
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
#include <algorithm> | |
#include <vector> | |
using namespace std; | |
/* | |
Problema 1582 | |
Endereço: https://www.urionlinejudge.com.br/judge/pt/problems/view/1582 | |
Primeiro parágrafo é só blá blá blá, falando da história do teorema de | |
Pitágoras. | |
Ele fala que uma tripla pitagórica é quando existe um triângulo retângulo | |
que tenha x, y, z como lados. Um triângulo retângulo é aquele que possui um | |
ângulo reto e dois ângulos agudos complementares. Possui a hipotenusa que é | |
o lado maior e os dois catetos. | |
O teorema de pitágoras diz que a soma dos quadrados dos catetos é igual | |
à hipotenusa. Ou seja (3, 4, 5) é tripla pitagórica porque 5^2 = 4^2 + 3^2 | |
=> 25 = 16 + 9 => 25 = 25 | |
Mas ele fala também de uma tripla pitagórica primitiva, por exemplo: | |
(6, 8, 10) não é tripla pitagórica primitiva porque é apenas a tripla (3, 4, 5) | |
multiplicada por 2. Uma pitagórica primitiva é quando o mdc(x,y,z) = 1 | |
O problema é simples: é só para dizer se a tripla é somente uma tripla ou é | |
tripla pitagorica ou é tripla pitagorica primitiva | |
*/ | |
int main() | |
{ | |
vector<int> v(3); | |
// obtém as entradas | |
while(cin >> v[0] >> v[1] >> v[2]) | |
{ | |
sort(v.begin(), v.end()); | |
// verifica se é pitagórica | |
if(v[2] * v[2] == (v[0] * v[0] + v[1] * v[1])) | |
{ | |
int mdc = 1, div; | |
for(div = 2; div <= v[0]; div++) // obtém o MDC | |
{ | |
if((v[0] % div == 0) && (v[1] % div == 0) && (v[2] % div == 0)) | |
mdc = div; | |
} | |
// se o mdc for 1, então é pitagorica primitiva | |
if(mdc == 1) | |
cout << "tripla pitagorica primitiva"; | |
else | |
cout << "tripla pitagorica"; | |
} | |
else | |
cout << "tripla"; | |
cout << endl; | |
} | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment