quarta-feira, 3 de outubro de 2018

URI PROBLEMA 2292 - Painel LED SOLUÇÃO EM C

URI Online Judge | 2292

Painel LED

Por Francisco Elio Parente Arcos Filho, UEA BR Brazil
Timelimit: 1
Na 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.

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

URI PROBLEMA 1133 - Resto da Divisão SOLUÇÃO EM C

URI Online Judge | 1133 Resto da Divisão Adaptado por Neilor Tonin, URI   Brasil Timelimit: 1 Escreva um programa que leia 2 valo...