Pessoal, este é mais um exercício que resolvo. A Volta do Radar, um exercício iniciante, bem simples e ideal para quem está começando no mundo da programação. Veja na sequência a solução em C e C++!
Plataforma: URI (BEECROWD)
Problema: 2143
Enunciado:
Todo ano após a competição que ocorre na cidade de Taxilândia, os participantes e os coaches vão para o célebre restaurante Radar. Porém, os garçons (sempre muito gentis e educados) ficam sobrecarregados devido à quantidade de pessoas, e consequentemente, acabam demorando um pouco para atender a um pedido.
Os participantes ou coaches que sentam nas pontas são os privilegiados, pois são atendidos com somente um pedido, mas os demais precisam sempre pedir duas vezes, pois os garçons (apesar de gentis e educados) são desatentos e se esquecem facilmente dos pedidos. Além disso, há uma superstição entre os participantes e coaches de que se não houver um número par de pessoas que não sentam nas pontas, na próxima competição nenhuma equipe da universidade conseguirá vencer.
Portanto, sua tarefa é determinar a soma da quantidade de pedidos de cada um para saber se vale a pena ir ao Radar. Mas apesar do resultado, lembre-se: sempre vale a pena ir ao Radar!
Linguagens: C e C++
Solução:
O raciocínio foi o mesmo nas duas soluções abaixo. Em um laço de repetição infinito, li o valor de t. Se este valor for zero, significa que chegamos na condição de parada e já pode interromper o laço, indo diretamente para o final do programa. Se o valor não for zero, deve realizar t iterações e leituras de "n".
A variável resposta será o dobro de n-1, e se o valor de n for impar, este valor deve ainda ser acrescido de um. Depois é só escrever a variável resposta.
É importante notar que utilizei bitwise para verificar se o número é ímpar. Isso pode ser feito utilizando mod (operador %), mas preferi fazer com bitwise. O teste n&1 é a mesma coisa que (n& 1) == 1, então, se o último bit de n for 1, 1&1 retorna 1, ou seja, o valor é ímpar.
Era isso!
Código em C:
#include <stdio.h> int main() { int t, n, resposta; while (1) { scanf("%i", &t); if (t == 0) return 0; while (t--) { scanf("%i", &n); resposta = (n-1) * 2; if (n & 1) ++resposta; printf("%i\n", resposta); } } }
#include <iostream> using namespace std; int main() { int t, n, resposta; while (1) { cin >> t; if (t == 0) return 0; while (t--) { cin >> n; resposta = (n-1) * 2; if (n & 1) ++resposta; cout << resposta << endl; } } }