Mais diversão para vocês!

Problema 3: LCD Display

UVa ID: 706    ;    Nível: Fácil

Um amigo seu acabou de comprar um novo computador. Antes disso, a máquina mais poderosa que ele havia usado foi uma calculadora de bolso. Ele está um pouco desapontado porque ele gostava do display LCD da sua calculadora mais do que da tela do seu novo computador! Para fazê-lo feliz, escreva um programa que imprima números no estilo de um display LCD.

Entrada

O arquivo de entrada contém diversas linhas, uma para cada número a ser disposto na tela. Cada linha contém inteiros s e n, onde n é o número a ser disposto (0 <= n <= 99.999.999) e s é o tamanho que ele irá aparecer (1 <= s <= 10). A entrada será terminada por uma linha contendo dois zeros, que não deve ser processada.

Saída

Escreva os números especificados no arquivo de entrada em estilo display LCD usando s sinais “-” para os segmentos horizontais e s sinais “|” para os verticais. Cada dígito ocupa exatamente s + 2 colunas e 2s + 3 linhas. Esteja certo de preencher todos os espaços brancos ocupados pelos dígitos com “espaços”, incluindo o último dígito. Deve haver exatamente uma coluna de “espaços” entre dois dígitos.

Coloque uma linha de “espaço” após cada número. Você encontrará um exemplo de cada dígito no Exemplo de saída abaixo.

Exemplo de entrada

2 12345

3 67890

Exemplo de saída


Exemplo de Saida

Problema 4: Interpreter (Interpretador)

UVa ID: 10033       ;     Nível: Médio

Um certo computador tem dez registradores e 1000 palavras de RAM. Cada registrador ou local na RAM armazena um inteiro de três dígitos entre 0 (zero) e 999. Intruções são codificadas como inteiros de três dígitos e armazenadas na RAM. Os códigos são os seguintes:

100  | manter

2dn  | armazena no registrador d o valor n (entre 0 e 9)

3dn  | adiciona n ao valor armazenado em d

4dn  | multiplica por n o valor armazenado em d

5ds  | armazena em d o mesmo valor armazenado em s

6ds  | adiciona o valor armazenado em s ao armazenado em d

7ds  | multiplica o valor armazenado em d pelo de s

8da  | armazena em d o valor de RAM que tiver seu endereço armazenado no registrador a

9sa  | armazena na RAM, cujo endereço esteja em a, o valor armazenado no registrador s

0ds  | vai para o local armazenado no registrador d a menos que o registrador s cotenha 0 (zero)

Todos os registradores inicialmente contém 000 (zero). O conteúdo inicial da RAM é lido de uma entrada padrão. A primeira instrução a ser executada é no endereço RAM zero. Todos os resultados são reduzidos módulo 1000.

Entrada

A entrada começa com um único inteiro positivo na linha, indicando o número de casos, cada um descrito abaixo. É seguido por uma linha em branco e haverá uma linha em branco entre cada duas entradas consecutivas.

Cada caso de entrada consiste num inteiro sem sinal de três dígitos, representando os conteúdos de locais consecutivos na RAM, começando pelo zero. Locais de RAM não especificados são inicializados com 000 (zero).

Saída

A saída de cada caso de teste é um único inteiro: o número de instruções executadas acima e incluindo a de “manter”. Você pode assumir que o programa faz o “manter”. Separe a saída de dois casos consecutivos por uma linha em branco.

Exemplo de entrada

1

299

492

495

399

492

495

399

283

279

689

078

100

000

000

000

Exemplo de saída

16

É isso aí pessoal, temos agora a segunda parte da primeira bateria de exercícios proposta como treinamento, ok? Os exeercícios de agora são um pouco mais difíceis (confesso que não entendi nem o que pede o problema 4 de primeira olhada xD ), contudo não desanimem, pois precisamos pegar pesado se queremos alguma coisa.

Posts interessantes:

Novamente, qualquer dica para a solução de problemas é extremamente bem vinda e dúvidas serão, à medida do possível, respondidas. Deixe seu comentário falando o que achou dos problemas! E conte também seu caso de sucesso!

Helton de Melo Duarte

“A sabedoria exalta aos que a favorecem, honra aos que a amam, e empresta graça à aparência de uma pessoa, para que esta seja admirada e respeitada por aqueles que a conhecem.” Charles Fritsch

6 Responses to “Programando melhor: Exercícios 1 (Parte II)”

  1. Programando melhor: Exercícios 1 (Parte I) « Blog de Helton Duarte Says:

    [...] Programando melhor: Exercícios 1 (Parte II) [...]

  2. Programando melhor: Aviso « Blog de Helton Duarte Says:

    [...] Programando melhor: Exercícios 1 (Parte II) [...]

  3. Programando melhor: Aula 2 - Estruturas de Dados « Blog de Helton Duarte Says:

    [...] Programando melhor: Exercícios 1 (Parte II) [...]

  4. 2008 Olimpíada de Algoritmo Hostnet- A maior competição entre escolas técnicas do Brasil » Blog Archive » Programando melhor: Exercícios 1 (Parte II) Says:

    [...] Leia mais >> [...]

  5. Programando melhor: Aula 2 - Estruturas de Dados | Blog de Helton Duarte Says:

    [...] Programando melhor: Exercícios 1 (Parte II) [...]

  6. Programando melhor: Aula 1 – Começando | Blog de Helton Duarte Says:

    [...] Programando melhor: Exercícios 1 (Parte II) [...]

Leave a Reply

Spam Protection by WP-SpamFree