Plataforma: URI (BEECROWD)
Problema: 2455
Enunciado:
Joãozinho acaba de mudar de escola e a primeira coisa que percebeu na nova escola é que a gangorra do parquinho não é simétrica, uma das extremidades é mais longa que a outra. Após brincar algumas vezes com um amigo de mesmo peso, ele percebeu que quando está em uma extremidade, a gangorra se desequilibra para o lado dele (ou seja, ele fica na parte de baixo, e o amigo na parte de cima), mas quando eles trocam de lado, a gangorra se desequilibra para o lado do amigo. Sem entender a situação, Joãozinho pediu ajuda a outro amigo de outra série, que explicou que o comprimento do lado interfere no equilíbrio da gangorra, pois a gangorra estará equilibrada quando
P1 ∗ C1 = P2 ∗ C2
onde P1 e P2 são os pesos da criança no lado esquerdo e direito, respectivamente, e C1 e C2 são os comprimentos da gangorra do lado esquerdo e direito, respectivamente.
Linguagens: C e C++
Solução:
A solução é simples, basta ler todos os valores e multiplicar p1 por c1 e p2 por c2. Se os valores forem iguais, imprime zero. Se p1*c1 for maior que p2*c2, imprime -1, caso contrário imprime 1. Utilizei o operador ternário para escrever menos linhas aqui, e o tipo das variáveis foi int no código em C e short unsigned int no código em C++, apenas para mudar um pouco. Ambos os códigos poderiam ser feitos com short unsigned int, pois o valor informado é sempre um inteiro pequeno não negativo. Compreenderam a solução? Qualquer dúvida é só comentar!
Código em C:
#include <stdio.h> int main() { int p1, p2, c1, c2, r1, r2; scanf("%d %d %d %d", &p1, &c1, &p2, &c2); r1 = p1 * c1; r2 = p2 * c2; printf("%d\n", (r1 == r2? 0 : (r1 > r2? -1 : 1))); return 0; }
#include <iostream> using namespace std; int main() { short unsigned int p1, p2, c1, c2, r1, r2; cin >> p1 >> c1 >> p2 >> c2; r1 = p1 * c1; r2 = p2 * c2; cout << (r1 == r2? "0" : (r1 > r2? "-1" : "1")) << endl; return 0; }
Nenhum comentário:
Postar um comentário