Pesquisar este blog

Livros Recomendados

quarta-feira, 24 de março de 2021

URI (BEECROWD) - 3209 - Tomadas Elétricas - Iniciante - C e C++

Plataforma: URI (BEECROWD)

Problema3209

Linguagens: C e C++

Enunciado:
Roy acaba de se mudar para um novo apartamento. Bem, na verdade o apartamento em si não é muito novo, remonta aos dias antes das pessoas terem eletricidade em suas casas. Por causa disso, o apartamento de Roy tem apenas uma única tomada, então Roy só pode alimentar um de seus aparelhos elétricos por vez.

Roy gosta de assistir TV enquanto trabalha em seu computador e de ouvir seu sistema HiFi (em alto volume) enquanto aspira, portanto, usar apenas uma única tomada não é uma opção. Na verdade, ele quer ter todos os seus aparelhos conectados a uma tomada elétrica, o tempo todo. A resposta, claro, são réguas de energia, e Roy tem algumas velhas que usou em seu antigo apartamento. No entanto, aquele apartamento tinha muito mais tomadas de parede, então ele não tem certeza se suas réguas de energia fornecerão tomadas suficientes agora.

Sua tarefa é ajudar Roy a calcular quantos aparelhos ele pode fornecer com eletricidade, considerando um conjunto de filtros de linha. Observe que, sem réguas de energia, Roy pode ligar um único aparelho na tomada. Além disso, lembre-se de que um filtro de linha deve ser alimentado por si mesmo para ter alguma utilidade.

Solução:

A solução foi pensada da seguinte maneira: após ler o valor de n e utilizá-lo como contador regressivo para ler o valor k, fez-se a leitura do valor "o" e o resultado foi acumulado na variável acum. Ao final, o resultado será sempre acum-k+1, expressão que já coloquei direto no printf final. No caso da solução em C++ o código foi feito da mesma forma, mas utilizando as funções de leitura e escrita da biblioteca iostream (std:cin e std::cout)

Código em C:

#include <stdio.h>

int main() {
    
    int n, k, o, i, acum;
    
    scanf("%d", &n);
    
    while (n--) {
        acum = 0;
        scanf("%d", &k);
        for (i = 0; i < k; i++) { 
            scanf("%d", &o);
            acum += o;
        }
        printf("%d\n", acum - k + 1);
    }

    return 0;
}

Código em C++:


#include <iostream>

using namespace std;

int main() {
    
    int n, k, o, i, acum;
    
    cin >> n;
    
    while (n--) {
        acum = 0;
        cin >> k;
        for (i = 0; i < k; i++) { 
            cin >> o;
            acum += o;
        }
        cout << acum - k + 1 << 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