URI Online Judge | 2292
Painel LED
Por Francisco Elio Parente Arcos Filho, UEA
Brazil
Timelimit: 1
BrazilNa Nlogonia são fabricados painéis de lâmpadas LED para o natal que funcionam como pisca-piscas. Esses painéis são compostos de N lâmpadas dispostas horizontalmente lado a lado. Além disso, esses panéis tem um comportamento bem definido: logo ao ser conectado a uma tomada, algumas lâmpadas acendem instantaneamente. Depois disso a lâmpada mais à esquerda alterna seu estado de ligado para desligado a cada piscada do painel, exceto por ela, todas as outras lâmpadas só alternam seu estado se a lâmpada a sua esquerda apagar.
Curioso como é, Vitor, um garoto feliz habitante de Nlogonia, quer saber, dado o número de alternâncias da primeira lâmpada (mais à esquerda), qual é a configuração final do Painel.
Curioso como é, Vitor, um garoto feliz habitante de Nlogonia, quer saber, dado o número de alternâncias da primeira lâmpada (mais à esquerda), qual é a configuração final do Painel.
Entrada
A primeira linha da entrada contém um número inteiro N que especifica a quantidade de casos de teste. Depois haverá N linhas cada uma contendo uma string P (1 ≤ |P| ≤ 60) que representa a configuração inicial do painel de lâmpadas. As lâmpadas inicialmente acesas são representadas pelo caracter 'O' e as apagadas por 'X'. Na mesma linha haverá também um número inteiro C (1 ≤ C ≤ 1018) que representa a quantidade de alternâncias da primeira lâmpada.
Saída
A saída consiste em uma linha por caso de teste contendo a configuração final do painel após as alternâncias da primeira lâmpada.
#include <stdio.h>
int main()
{
int tst, i;
scanf("%d", &tst);
while(tst--)
{
long long int num, dcml = 0ll, tmp;
char str[65];
scanf("%s %lld", str, &num);
for(i=0; str[i]; i++)
{
if(str[i]=='O')
dcml += ceil(pow(2, i));
}
int lnth = strlen(str);
tmp = ceil(pow(2, lnth));
dcml += num;
dcml = dcml % tmp;
tmp = dcml;
while(tmp)
{
if(tmp%2ll) printf("O");
else printf("X");
tmp /= 2ll;
}
tmp = log2(dcml) + 1ll;
for(i=lnth - tmp; i>=1; i--)
printf("X");
printf("\n");
}
return 0;
}
Nenhum comentário:
Postar um comentário