Ir para conteúdo
Entre para seguir isso  
Raphael Carnaúba

[desafio] F91 [c++]

Recommended Posts

Raphael Carnaúba    1
Raphael Carnaúba

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

 

Dou 10V$ pra quem acertar, mandar as respostas por P.M :)

Editado por Raphael Carnaúba

Compartilhar este post


Link para o post
Compartilhar em outros sites
Rich Man    0
Rich Man

Se N ≥ 101

poderia ser substituido por

Se N > 100

 

li mais 2 vezes e entendi

meio dificil heim '.'

Editado por Rich Man

Compartilhar este post


Link para o post
Compartilhar em outros sites
Raphael Carnaúba    1
Raphael Carnaúba

Rich Man,

Se N ≤ 100

o resultado vai ser F91 (F91 ( N + 11) )

Se N ≥ 101

o resultao vai ser N - 10.

 

Lembra de funções e equações no ensino médio? xD

Compartilhar este post


Link para o post
Compartilhar em outros sites
the_labrax    0
the_labrax

em tese algo parecido com isto...

alguem arruma e manda como mp pra ele

 

 

int f91(int n)

{

if(n >= 101) return n-10;

if(n <= 100) return f91(f91(n+11));

}

int main()

{

int valor[linhas]; <-- malloc ou alguma função de alocação se quiser

//funções de entrada

while(valor[linha]!=0):

ler: valor[linha] = linha arquivo...

//funções de saída

escrever: f91(%valor%) = (executar: f91(%valor%)) <-- implementar aqui a resposta

}

 

que esmola...

Editado por the_labrax

Compartilhar este post


Link para o post
Compartilhar em outros sites
Nenzzy    0
Nenzzy

hãa?

tendi bosta nenhuma

Compartilhar este post


Link para o post
Compartilhar em outros sites
Mickfern    32
Mickfern

Olha, voce poderia postar o nível de dificuldade para isto ?

Estou começando no ramo, mas não entendi nada, isso é para intermediário ou experiente?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Blue Bird2    0
Blue Bird2

dificil isso

Compartilhar este post


Link para o post
Compartilhar em outros sites
Raphael Carnaúba    1
Raphael Carnaúba

Pareçe ser super-facil, mais tem uma casca de banana. díria que de 0-10 é um 6.

 

the_labrax, tá certo tua lógica...

não precisa ler arquivo, apenas o que foi digitado no console. basta um std::cin ou scanf.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Baxnie    8
Baxnie

int f91(int n)
{
   if(n <= 100)
       return 91;
   return n-10;
}

int main(int argc, char *argv[])
{
   printf("%d\n",f91(500));
   printf("%d\n",f91(90));
   return 0;
}

 

Que função tosca kk

...

Editado por Baxnie
<= 100 é 91 lols

Compartilhar este post


Link para o post
Compartilhar em outros sites
Raphael Carnaúba    1
Raphael Carnaúba

Vc adora uma piadinha né Baxnie? hauhauhauhua :]

Compartilhar este post


Link para o post
Compartilhar em outros sites
HenneT    2
HenneT

fiz assim, x.x

 

#include <iostream>
#include <cstdlib>
#include <list>

using namespace std;

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

int f91(int valor){
if(valor >= 101)
	return (valor - 10);
else
	return f91(valor + 11);
}

int main(){
list<int> lista;  
int valor;

cout << "Digite alguns inteiros (0 para sair):\n";

do {
	cin >> valor;
	if(valor)
		lista.push_back (valor);
	else
		break;
} while (valor);


while (!lista.empty())
{
	valor = lista.front();
	cout << " f91 (" <<  valor << ")" << " = "<< f91(valor) << endl ;
	lista.pop_front();
 }

system("pause");

return 0;
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
Entre para seguir isso  

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×