(1) Os números proibidos são números que possuem alguma representação problemática, por exemplo, número do azar, de algo ruim, e até números que são senhas do governo.
O número proibido mais conhecido é um número primo que foi descoberto em 2001 e representa o arquivo binário da versão compactada do código C que implementa o algoritmo DeCSS, que pode ser utilizado para lograr o sistema de proteção do DVD.
Implementar um programa que receba um set de números ilegais e responda se um outro set de números fazem parte dos números ilegais. O segundo set não possui tamanho fixo, os valores devem ser informados até que o usuário digite um valor menor que 0 .

Exemplo de entrada:

Entre com a quantidade de numeros proibidos: 7
Entre com os numeros proibidos: 100502512103000
Entre com o(s) valore(s):
1
2
3
10
0
-1

Exemplo de saída:

0 - eh numero proibido
1 - não eh numero proibido
2 - não eh numero proibido
3 - não eh numero proibido
10 - eh numero proibido

Passo 1

Beleza, o que essa questão tá pedindo é: a gente vai receber primeiro um “conjunto” (set) de números proibidos, depois vai ficar lendo vários números do usuário até ele digitar um valor menor que zero. Para cada número lido, a gente verifica se ele está no nosso conjunto de proibidos e imprime “eh numero proibido” ou “não eh numero proibido”.
O conteúdo aqui é bem básico de programação: vetores (arrays) para guardar os proibidos, laços de repetição (for/while) para ler dados, e estruturas de decisão (if) para testar se um número pertence ao vetor.

Passo 2

Primeiro, a gente lê a quantidade de números proibidos, vamos chamar de n. Em C, por exemplo, seria:
int n;
scanf("%d", &n);
Isso guarda em n quantos números o usuário vai informar.

Passo 3

Agora que a gente sabe que são n números, a gente cria um vetor para armazenar esses proibidos. Como os números podem ser grandinhos (no exemplo tem “100502512103000”), a gente usa long long:
long long proibidos[n];
Em seguida, roda um for de i = 0 até i < n para fazer:
for(int i = 0; i < n; i++){
    scanf("%lld", &proibidos[i]);
}
Isso coloca cada número proibido dentro do vetor na posição i.

Passo 4

Agora vem a parte de ler valores até encontrar um menor que zero. A gente faz um while(1) infinito e sai do laço quando esse valor for negativo:
long long x;
while(1) {
    scanf("%lld", &x);
    if (x < 0) break;
    // Aqui dentro vamos verificar se x é proibido
}

Passo 5

Pra saber se um valor x tá no nosso conjunto de proibidos, a gente faz uma busca simples: percorre o vetor inteiro e compara. Em termos de teoria, estamos testando
x in S?
onde é o conjunto dos proibidos. Se achar um proibidos[j] == x, a gente marca como “achou”. Se terminar de percorrer sem achar, é “não achou”.

Passo 6

Juntando tudo, dentro do while a gente coloca:
int achou = 0;
for(int j = 0; j < n; j++){
    if(proibidos[j] == x){
        achou = 1;
        break;
    }
}
if(achou)
    printf("%lld - eh numero proibido\n", x);
else
    printf("%lld - não eh numero proibido\n", x);
Isso imprime exatamente no formato que pedem.

Resposta

#include <stdio.h>

int main(){
    int n;
    // Passo 2: leio quantidade de proibidos
    scanf("%d", &n);

    // Passo 3: crio vetor e leio os proibidos
    long long proibidos[n];
    for(int i = 0; i < n; i++){
        scanf("%lld", &proibidos[i]);
    }

    // Passo 4, 5 e 6: leio valores até x < 0, verifico e imprimo resultado
    long long x;
    while(1){
        scanf("%lld", &x);
        if (x < 0) break;

        // teste de pertença: x ∈ proibidos?
        int achou = 0;
        for(int j = 0; j < n; j++){
            if(proibidos[j] == x){
                achou = 1;
                break;
            }
        }

        if(achou)
            printf("%lld - eh numero proibido\n", x);
        else
            printf("%lld - não eh numero proibido\n", x);
    }

    return 0;
}

Exercícios relacionados