Outro exercício novo resolvido! Quem mais conseguiu fazer esse?
Antes de resolver qualquer algoritmo do URI (BEECROWD agora), recomendamos seguir os seguintes passos:
- Ler todo enunciado do problema.
- Ler os tópicos do fórum em caso de dúvidas
- Preparar arquivos de entrada para teste, considerando as entradas de exemplo do URI, do udebug e outros valores limite;
- Preparar o ambiente de desenvolvimento e utilizar os mesmos parâmetros dos compiladores do URI
- Preparar um código-fonte padrão, já contendo a chamada às bibliotecas padrão, pré-processadores, retorno de função e um comando de escrita com "\n", pois no URI a grande maioria dos problemas exige a quebra de linha final.
Plataforma: URI (BEECROWD)
Problema: 3342
Enunciado:
Keanu estava testando novos modelos de tabuleiros de xadrez quanto teve a seguinte duvida: Quantas casas brancas e quantas casas pretas tem um tabuleiro de xadrez de tamanho nxn?
Linguagens: C e C++
Solução:
Utilizando o tipo inteiro, basta saber que sempre teremos a metade dos quadrados brancos e a metade dos quadrados pretos em relação ao tamanho total do tabuleiro, que será n x n. No entanto, quanto n é ímpar, uma das cores receberá um quadrado a mais, e será sempre o branco. Então precisamos garantir que o branco sempre pegue +1 quando n for ímpar. Assim, ((n*n)+1)/2 é o cálculo do branco, e n*n/2 é o cálculo do preto, ou (n*n)-branco. Resolvi em C utilizando variáveis e em C++ com o cálculo direto na operação de saída (escrita).
Conseguiram entender a solução?
Código em C:
#include <stdio.h>
int main() {
unsigned int n;
unsigned int total;
unsigned int brancas;
unsigned int pretas;
scanf("%u", &n);
total = n * n;
pretas = total / 2;
brancas = total - pretas;
printf("%u casas brancas e %u casas pretas\n", brancas, pretas);
return 0;
}
Código em C++:
#include <iostream>
using namespace std;
int main() {
unsigned int n;
cin >> n;
cout << (n * n + 1) / 2 << " casas brancas e " << n * n / 2 << " casas pretas" << endl;
return 0;
}
Nenhum comentário:
Postar um comentário