Problema: 1169
Enunciado:
Uma rainha requisitou os serviços de um monge e disse-lhe que pagaria qualquer preço. O monge, necessitando de alimentos, perguntou a rainha se o pagamento poderia ser feito em grãos de trigo dispostos em um tabuleiro de damas, de forma que o primeiro quadrado tivesse apenas um grão, e os quadrados subseqüentes, o dobro do quadrado anterior. A rainha considerou o pagamento barato e pediu que o serviço fosse executado, porém, um dos cavaleiros que estava presente e entendia um pouco de matemática alertou-a que seria impossível executar o pagamento, pois a quantidade de grão seria muito alta. Curiosa, a rainha solicitou então a este cavaleiro que era bom em cálculo, que fizesse um programa que recebesse como entrada o número de quadrados a serem usados em um tabuleiro de damas e apresentasse a quantidade de kg de trigo correspondente, sabendo que cada 12 grãos do cereal correspondem a uma grama. Finalmente, o cálculo da quantidade deverá caber em um valor inteiro de 64 bits sem sinal.
Linguagem: C++
O problema é resolvido aplicando uma simples fórmula matemática. A fórmula é 2 elevado ao valor lido, após é subtraído 1. Isso porque para cada posição é multiplicado por 2 e na primeira posição possui apenas uma unidade. Além disso, é feita a divisão por 12000, porque a cada 12000 grãos, terá apenas 1kg de trigo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #include <iostream> #include <cmath> using namespace std; int main() { long long n, value; cin >> n; while(n--){ cin >> value; value = (pow(2,value)-1)/12000; cout << value << " kg" << endl; } return 0; } |
Nenhum comentário:
Postar um comentário