Problem hidden
|This problem was hidden by Editorial Board member probably because it has incorrect language|version or invalid test data, or description of the problem is not clear.|

F91 - f91

McCarthy é um teórico famoso de ciência da computação. No seu trabalho, ele definiu uma função recursiva, chamada f91, que recebe como entrada um inteiro N e retorna um inteiro positivo definido como a seguir:

  • Se N ≤ 100, então f91 (N) = f91 (f91 (N + 11));
  • Se N ≥ 101, então f91 (N) = N - 10.

Escreva um programa que computa a função f91 de McCarthy.

Entrada

O arquivo de entrada consiste de uma série de inteiros positivos, cada inteiro é no máximo 1.000.000. Há no máximo 250.000 casos de teste. Cada linha possui somente um número. O fim da entrada é alcançada quando o número 0 é encontrado. O número 0 não deve ser considerado como parte do conjunto de teste.

Saída

O programa deve imprimir cada resultado em uma linha, seguindo o formato fornecido no exemplo de saída.

Exemplo

Entrada:
500
91
0

Saída:
f91(500) = 490
f91(91) = 91


Autor do Problema: David Déharbe

Adicionado por:Wanderley Guimarăes
Data:2007-10-02
Tempo limite:3s
Tamanho do fonte:50000B
Memory limit:1536MB
Cluster: Cube (Intel G860)
Linguagem permitida:Todas exceto: ASM64 CLOJURE ERL FSHARP JS-RHINO PERL6 PY_NBC SCALA TCL
Origem:Segunda Seletiva para Maratona de Programacao UFRN - 2004

hide comments
2013-05-30 18:44:18 luksky
Pessoal sabem me dizer se as saidas correspondentes as minhas entradas podem ser retornadas imediatamente apos a entrada ou precisam ser armazenadas e retornadas todas juntas apos a entrada 0 ?
2013-01-09 13:32:55 Loïc
se N==91,
f91(91)=f91(f91(102))
f91(91)=f91(92)
f91(91)=f91(f91(103))
f91(91)=f91(93)
...
f91(91)=f91(100)
f91(91)=f91(f91(111))
f91(91)=f91(101)
f91(91)=91 !!
2012-12-26 13:32:25 Gustavo Nascimento
Como será que o carinha conseguiu 0,10s em C??? o melhor que consegui foi 0,61 =x
2012-06-17 00:55:27
DevCemJava - Girdacio [FATEC-MC]

Vocę errou no caso de N <= 100. Provavelmente vocę colocou f91 = f91 (N + 11), quando o certo seria f91 = f91 (f91 (N + 11))

:)
2012-06-11 06:35:54 Renato R. de Resende [UFU]
Existe um padrăo para f91(N).
Tornando assim, desnecessário o uso da recursăo.
2012-05-29 13:36:06 Vinicius C. Tavares [FUNEDI-UEMG]
Năo acredito que o meu erro era somente no printf, tava colocando no printf:
printf("F91(%d) = %d\n", n,a);
e dava erro de resposta errada, so pq o F91 estava tudo em caixa alta.
2012-05-06 04:39:16 Chris Nic
Cara, sério.. eu năo consigo imaginar qual é a mágica para rodar isso em Java. Com C eu fiz rodar sem recursividade.. Mas com Java realmente năo vai MESMO! "Tempo limite excedido" Será que isso tem alguma coisa haver com a máquina virtual do Java demorar demais para dar up?
2012-02-16 21:45:24 qwert
Eu fiz em c++, usei recursăo e um vector e consegui 1.42seg e 2.48MB!!
é so vc ń usar, se vc for usar, estruturas de controle e repetiçăo sem necessidade!!
2011-12-07 16:48:10 Natan Pedrosa [UESPI]


Last edit: 2012-02-08 14:13:54
2011-12-05 23:40:57 Matheus de Araújo
O "segredo" para um tempo baixo é năo usar recursăo... Tentem descobrir um padrăo para f91(N) :)

Ah, f91(91) = 91 sim... f(91)=f91(f91(102))=f91(92)=[...]=f91(100)=f91(f91(111))=f91(101)=91
© Spoj.com. All Rights Reserved. Spoj uses Sphere Engine™ © by Sphere Research Labs.