Pesquisar este blog

Livros Recomendados

quinta-feira, 18 de março de 2021

URI (BEECROWD) - 2718 - Luzes de Natal - Iniciante - C e C++

Plataforma: URI (BEECROWD)

Problema2718

Enunciado:

Giovanna adora o Natal. As festas, a família, decorações natalinas e principalmente os famosos pisca pisca led. Porém, esse ano a pequena Gio ficou triste ao perceber que seu jogo de luzes está quebrado. Algumas luzes ainda funcionam, outras não. Giovanna quer, obviamente, consertar seu objeto preferido mas não tem lâmpadas o suficiente pra substituir todas as queimadas então resolveu fazer o seguinte: dividir o pisca pisca em grupos ordenados de 50 lâmpadas e em cada grupo só consertar a maior quantidade de lâmpadas consecutivas queimadas.

Por serem muitos grupos, a tarefa se tornou tediosa e para tentar remediar isso, Giovanna, observando a semelhança dos grupos com representação binária de números quando imaginava lâmpadas queimadas como 1's e lâmpadas funcionais como 0's, decidiu pensar neles efetivamente como números e escreveu as representações decimais desses binários então tentou descobrir a quantidade de lâmpadas a serem trocadas a partir dessas anotações.

Sua tarefa é, dado as anotações de Gio, diga quantas lâmpadas serão trocadas em cada grupo.


Linguagens: C e C++


Solução:

Código em C:

#include <stdio.h>
int main() {
    long long n, v, acum, maior, resto;
    scanf("%lld", &n);
    while (n--) {
        scanf("%lld", &v);
        acum = 0;
        maior = 0;
        while (v) {
            resto = v % 2;
            if (resto) {
                acum++;
                if (acum > maior)
                    maior = acum;
            }
            else
                acum = 0;
            v -= v/2 + resto;
        }
        printf("%lld\n", maior);
    }
    return 0;
}

Código em C++:

#include <iostream>
using namespace std;
int main() {
    long long n, v, acum, maior, resto;
    cin >> n;
    while (n--) {
        cin >> v;
        acum = 0;
        maior = 0;
        while (v) {
            resto = v % 2;
            if (resto) {
                acum++;
                if (acum > maior)
                    maior = acum;
            }
            else
                acum = 0;
            v -= v/2 + resto;
        }
        cout << maior << endl;
    }
    return 0;
}

Nenhum comentário:

Postar um comentário

Postagem em destaque

URI (BEECROWD) - 2158 - Helping Uncle Cláudio (Ajudando o Tio Cláudio) - Matemática - C, C++ e Haskell

Buenas! Estou aqui mais uma vez para resolver um problema de Matemática! Agora tenho resolvido alguns dessa categoria, pra que vocês possam ...

Postagens mais visitadas