Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 1914. Mostrar todas as postagens
Mostrando postagens com marcador 1914. Mostrar todas as postagens

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

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