Pesquisar este blog

Livros Recomendados

Mostrando postagens com marcador 2779. Mostrar todas as postagens
Mostrando postagens com marcador 2779. Mostrar todas as postagens

sexta-feira, 19 de março de 2021

URI (BEECROWD) - 2779 - Álbum da Copa - Iniciante - C e C++

Plataforma: URI (BEECROWD)

Problema2779

Enunciado:

Em ano de Copa do Mundo de Futebol, o álbum de figurinhas oficial é sempre um grande sucesso entre crianças e também entre adultos. Para quem não conhece, o álbum contém espaços numerados de 1 a N para colar as figurinhas; cada figurinha, também numerada de 1 a N, é uma pequena foto de um jogador de uma das seleções que jogará a Copa do Mundo. O objetivo é colar todas as figurinhas nos respectivos espaços no álbum, de modo a completar o álbum (ou seja, não deixar nenhum espaço sem a correspondente figurinha).

As figurinhas são vendidas em envelopes fechados, de forma que o comprador não sabe quais fi- gurinhas está comprando, e pode ocorrer de comprar uma figurinha que ele já tenha colado no álbum.

Para ajudar os usuários, a empresa responsável pela venda do álbum e das figurinhas quer criar um aplicativo que permita gerenciar facilmente as figurinhas que faltam para completar o álbum e está solicitando a sua ajuda.

Dados o número total de espaços e figurinhas do álbum, e uma lista das figurinhas já compradas (que pode conter figurinhas repetidas), sua tarefa é determinar quantas figurinhas faltam para completar o álbum.


Linguagens: C e C++


Solução:

Basta ler dois valores ("n" e "x") e inicializar "r" (a variável da resposta) com o valor de "n" e uma estrutura de dados array (array ou vector, no caso de C++) com zeros. Isso pode ser feito de diversas formas, eu fiz com um for atribuindo zero a cada posição.  Ao ler o valor "v" por "x" vezes, o valor da v-ésima posição deve ser 1. Nosso índice deve ser v-1 porque começamos com o índice zero. Depois disso, basta testar, para cada valor do array, se o valor é diferente de zero, decrementando r caso positivo, assim saberemos quantas figurinhas faltam para completar o álbum. Depois disso, basta imprimir "r", com quebra de linha ao final.

Os códigos abaixo fazem a mesma coisa.

Código em C:

#include <stdio.h>
int main() {
    int n, x, i, v;
    scanf("%d %d ", &n, &x);
    int f[n], r = n;
    for (i = 0; i < n; i++)
        f[i] = 0;
    for (i = 0; i < x; i++) {
        scanf("%d", &v);
        f[v-1] = 1;
    }
    for (i = 0; i < n; i++)
        if (f[i])
            r--;
    printf("%d\n", r);
    return 0;
}

Código em C++:

#include <iostream>
using namespace std;
int main() {
    int n, x, i, v;
    cin >> n >> x;
    int f[n], r = n;
    for (i = 0; i < n; i++)
        f[i] = 0;
    for (i = 0; i < x; i++) {
        cin >> v;
        f[v-1] = 1;
    }
    for (i = 0; i < n; i++)
        if (f[i])
            r--;
    cout << r << endl;
    return 0;
}

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