Pesquisar este blog

Livros Recomendados

sábado, 27 de fevereiro de 2021

URI (BEECROWD) - 1914 - De Quem é a Vez? - Iniciante - C e C++

O problema resolvido aqui é o "De quem é a vez?", do Beecrowd. Confira as respostas em C e C++!

Plataforma: URI (BEECROWD)

Problema1914

Enunciado:

Amarelinha provavelmente é a brincadeira em que as crianças da vila mais se divertem, porém a mesma vem causando um bom tempo de discussão e choro nas crianças que a praticam. A causa do transtorno é para decidir quem será o próximo a pular, mas recentemente Quico (O gênio!) teve uma grande ideia para solucionar o problema. Basicamente a brincadeira só poderá ser jogada de dois em dois jogadores e para escolher o próximo jogador Quico indicou o uso do tradicional método par ou ímpar, onde os dois jogadores informam um número e se a soma desses números for par o jogador que escolheu PAR ganha ou vice verso. Entretanto a utilização desse método vem deixando o Quico louco, louco, louco... E por esse motivo ele pediu a sua ajuda! Solicitou a você um programa que dado o nome dos jogadores, suas respectivas escolhas PAR ou IMPAR e os números, informe quem foi o vencedor.

Linguagens: C e C++

Solução:

Nesse exercício é necessário verificar se n+m é par ou ímpar. O teste de ser ímpar foi feito com bitwise. Além disso, é necessário saber o que cada jogador escolheu. Se o primeiro jogador escolheu ímpar e n+m é ímpar, ele ganhou. Se a soma for par e o segundo jogador escolheu ímpar, ele (o primeiro jogador) também ganhou. Caso contrário, o segundo jogador venceu. Você pode criar as condições de outras formas, eu fiz desse jeito!

Código em C:

#include <stdio.h>

int main() {
    char *nome1 = (char *) malloc(sizeof(char) * 32);
    char *nome2 = (char *) malloc(sizeof(char) * 32);
    
    char *escolha1 = (char *) malloc(sizeof(char) * 6);
    char *escolha2 = (char *) malloc(sizeof(char) * 6);
    
    int qt, n, m;
    
    scanf("%i ", &qt);
    
    while (qt--) {
        
        scanf("%s %s %s %s ", nome1, escolha1, nome2, escolha2);
        scanf("%i %i", &n, &m);
        
        if ((((n + m) & 1) && escolha1[0] == 'I') || (((n + m) % 2 == 0) && escolha2[0] == 'I'))
            printf("%s\n", nome1);
        else
            printf("%s\n", nome2);
        
    }

    return 0;
}

Código em C++:

#include <iostream>

using namespace std;

int main() {
    string nome1, nome2, escolha1, escolha2;
    
    int qt, n, m;
    
    cin >> qt;
    cin.ignore();
    
    while (qt--) {
        
        cin >> nome1 >> escolha1 >> nome2 >> escolha2;
        
        cin >> n >> m;
        cin.ignore();
        
        if ((((n + m) & 1) && escolha1[0] == 'I') || (((n + m) % 2 == 0) && escolha2[0] == 'I'))
            cout << nome1 << endl;
    
        else
            cout << nome2 << 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