URI Online Judge | 1483
Jogo do Bicho
Por Ricardo Anido
Brasil
Timelimit: 1
Brasil
Em um país muito distante, as pessoas são viciadas em um jogo de apostas bastante simples. O jogo é baseado em números e é chamado jogo do bicho. O nome do jogo deriva do fato que os números são divididos em 25 grupos, dependendo do valor dos dois últimos dígitos (dezenas e unidades), e cada grupo recebe o nome de um animal. Cada grupo é associado a um animal da seguinte forma: o primeiro grupo (burro) consiste nos números 01, 02, 03 e 04; o segundo grupo (águia) é composto dos números 05, 06, 07 e 08; e assim em diante, até o ultimo grupo contendo os números 97, 98, 99 e 00. As regras do jogo são simples. No momento da aposta, o jogador decide o valor da aposta V e um número N (0 ≤ N ≤ 1000000). Todos os dias, na praça principal da cidade, um número M é sorteado (0 ≤ M ≤ 1000000). O prêmio de cada apostador é calculado da seguinte forma:
- Se M e N têm os mesmos quatro últimos dígitos (milhar, centena, dezena e unidade), o apostador recebe V × 3000 (por exemplo, N = 99301 e M = 19301);
- Se M e N têm os mesmos três últimos dígitos (centena, dezena e unidade), o apostador recebe V × 500 (por exemplo, N = 38944 e M = 83944);
- Se M e N têm os mesmos dois últimos dígitos (dezena e unidades), o apostador recebe V × 50 (por exemplo, N = 111 e M = 552211);
- Se M e N têm os dois últimos dígitos no mesmo grupo, correspondendo ao mesmo animal, o apostador recebe V × 16 (por exemplo, N = 82197 and M = 337600);
- Se nenhum dos casos acima ocorrer, o apostador não recebe nada.
- Obviamente, o prêmio dado a cada apostador é o máximo possível de acordo com as regras acima. No entanto, não é possível acumular prêmios, de forma que apenas um dos critérios acima deve ser aplicado no cálculo do prêmio. Se um número N ou M com menos de quatro dígitos for apostado ou sorteado, assuma que dígitos 0 devem ser adicionados na frente do numero para que se torne de quatro dígitos; por exemplo, 17 corresponde a 0017.
- Dado o valor apostado, o número escolhido pelo apostador, e o número sorteado, seu programa deve calcular qual o prêmio que o apostador deve receber.
Entrada
A entrada contém vários casos de teste. Cada caso consiste em apenas uma linha, contendo um número real V e dois inteiros N e M, representando respectivamente o valor da aposta com duas casas decimais (0.01 ≤ V ≤ 1000.00), o número escolhido para a aposta (0 ≤ N ≤ 1000000) e o número sorteado (0 ≤ M ≤ 1000000). O final da entrada é indicado por uma linha contendo V = M = N = 0.
Saída
Para cada um dos casos de teste seu programa deve imprimir uma linha contendo um número real, com duas casas decimais, representando o valor do prêmio correspondente à aposta dada.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main ()
{
int c, h = 1, Matriz[24], d_ulN, d_ulM, t_ulN, t_ulM, q_ulN, q_ulM;
unsigned long long N, M;
double V, premio;
scanf("%lf", &V);
scanf("%llu", &N);
scanf("%llu", &M);
// atribui valores a matriz (inicio dos intervalos)//
for (c = 0; c <= 24; c++)
{
Matriz[c] = h;
h = h + 4;
}
////////////////////////////////////////////////////////////
//DESCOBRINDO OS ULTIMOS NUMEROS//
do
{
premio = 0;
d_ulN = N % 100;
d_ulM = M % 100;
t_ulN = N % 1000;
t_ulM = M % 1000;
q_ulN = N % 10000;
q_ulM = M % 10000;
if (q_ulN == q_ulM) // 4 ultimos
premio = V * 3000;
else
if (t_ulN == t_ulM) //3 ultimos
premio = V * 500;
else
if (d_ulN == d_ulM) // 2 ultimos
premio = V * 50;
else // DESCOBRINDO OS DE MESMO GRUPO
if ((d_ulN == 00) && (d_ulM == 00))
premio = V *16;
else
{
for (c = 0; c <= 24; c++)
{
if ((d_ulN >= Matriz[c]) && (d_ulN < Matriz[c+1]))
//maiores ou iguais ao corrente E menores que
//o proximo grupo=> mesmo grupo
{
if (d_ulM >= Matriz[c] && (d_ulM < Matriz[c+1]))
premio = V *16;
else
if (d_ulN >= 97 && d_ulM >= 97 )
premio = V *16;
}
}
}
printf("%.2lf\n", premio);
scanf("%lf", &V);
scanf("%llu", &N);
scanf("%llu", &M);
} while ((V!=0) || (N!=0) || (M!=0));
return 0;
}
0 Comentários