Pesquisar este blog

Livros Recomendados

sexta-feira, 12 de março de 2021

URI (BEECROWD) - 2455 - Gangorra - Ad-Hoc - C e C++

Plataforma: URI (BEECROWD)

Problema2455

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;
}

Código em C++:

#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

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas