quitZAUMMM 18 Denunciar post Postado Setembro 14, 2008 Problema: QUERMESSE Os alunos do último ano resolveram organizar uma quermesse para arrecadar fundos para a festa de formatura. A festa prometia ser um sucesso, pois o pai de um dos formandos, Teófilo, dono de uma loja de informática, decidiu doar um computador para ser sorteado entre os que comparecessem. Os alunos prepararam barracas de quentão, pipoca, doces, ensaiaram a quadrilha e colocaram à venda ingressos numerados sequencialmente a partir de 1. O número do ingresso serviria para o sorteio do computador. Ficou acertado que Teófilo decidiria o método de sorteio; em princípio o sorteio seria, claro, computadorizado. O local escolhido para a festa foi o ginásio da escola. A entrada dos participantes foi pela porta principal, que possui uma roleta, onde passa uma pessoa por vez. Na entrada, um funcionário inseriu, em uma lista no computador da escola, o número do ingresso, na ordem de chegada dos participantes. Depois da entrada de todos os participantes, Teófilo começou a trabalhar no computador para preparar o sorteio. Verificando a lista de presentes, notou uma característica notável: havia apenas um caso, em toda a lista, em que o participante que possuia o ingresso numerado com i, havia sido a i-ésima pessoa a entrar no ginásio. Teófilo ficou tão encantado com a coincidência que decidiu que o sorteio não seria necessário: esta pessoa seria o ganhador do computador. Tarefa Conhecendo a lista de participantes, por ordem de chegada, sua tarefa é determinar o número do ingresso premiado, sabendo que o ganhador é o único participante que tem o número do ingresso igual à sua posição de entrada na festa. Entrada A entrada é composta de vários conjuntos de teste. A primeira linha de um conjunto de teste contém um número inteiro positivo N que indica o número de participantes da festa. A linha seguinte contém a sequência, em ordem de entrada, dos N ingressos das pessoas que participaram da festa. O final da entrada é indicado quando N = 0. Para cada conjunto de teste da entrada haverá um único ganhador. Saída Para cada conjunto de teste da entrada seu programa deve produzir três linhas. A primeira linha identifica o conjunto de teste, no formato "Teste n", onde n é numerado a partir de 1. A segunda linha deve conter o número do ingresso do ganhador, conforme determinado pelo seu programa. A terceira linha deve ser deixada em branco. A grafia mostrada no Exemplo de Saída, abaixo, deve ser seguida rigorosamente. Exemplo Entrada: 4 4 5 3 1 10 9 8 7 6 1 4 3 2 12 10 0 Saída: Teste 1 3 Teste 2 10 Restrições 0 <= N <= 10000 (N = 0 apenas para indicar o fim da entrada) TODO MATERIAL É RETIRADO DO SITE BR.SPOJ.PL bom galera ta ae um desafio inicial, é bem simples esse foi aplicado na OBI de 2000 eu acho.. ;D Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Setembro 30, 2008 #!/usr/bin/env python from string import atoi from string import split ingressos = [] teste = 1 def condicao(x): return x == ingressos[teste-1].index(x)+1 while True: qtde = atoi(raw_input()) if qtde == 0: break if qtde > 0 and qtde <= 10000: tmp =raw_input().split(' ') tmp2 = [] for item in tmp: tmp2.append(atoi(item)) ingressos.append(tmp2) if qtde < 0 or qtde > 10000: exit(1) print "\n\n" for item in ingressos: print "Teste ",teste print filter(condicao,item)[0],"\n" teste+=1 Tô fazendo em python pq peguei livro p/ estudar. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2008 fiz em C esse código, ficou simples assim: #include <stdio.h> int main(){ int n, n2, n3, i; int t = 1; while(scanf("%d",&n), n>0) { for(i=1;i<=n;i++) { scanf("%d",&n2); if (n2 == i) n3 = i; } printf("\nTeste %d\n%d\n",t++, n3); } return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Outubro 2, 2008 Poxa gente c você's não participarem infelizmente terei q pedir para o sub aki ser desativado.. gostaria muitos q vcs participassem tirando duvidas sobre a lógica e tal... []'s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Outubro 4, 2008 Acontece que eu armazenei primeiro.Senão ficaria assim #! /usr/bin/python from string import split,atoi contador = 1 while True: qtde = atoi(raw_input()) if qtde <=0 or qtde > 10000: exit(1) else: ingressos = raw_input().split() for item in ingressos: if atoi(item) == ingressos.index(item)+1: print "Teste ",contador,"\n",atoi(item) break Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Novembro 6, 2008 Movido: Lógica de Programação e Algoritmos » Desafios (Programação) http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Lógica de Programação e Algoritmos --- O tópico ficará pendurá-do por 2 semanas, se naum houver movimento irei despendurá-lo. []'s Compartilhar este post Link para o post Compartilhar em outros sites