Gente, bom dia! Eu to fazendo alguns exercicios do uri e travei nesse aqui:
Fibonacci de Novo!
A famosa sequência de Fibonacci pode ser definida da seguinte maneira:
- Fib( 1 ) = Fib( 2 ) = 1
- Fib( N ) = Fib( N-1 ) + Fib( N-2 ), para N > 2
Sua tarefa é simples, calcular o valor do resto de Fib( Fib( N ) ) por M.
Entrada
A entrada é composta por vários casos de teste e termina com EOF. Cada caso de teste consiste de uma linha com dois inteiros N e M (1 ≤ N ≤ 109, 2 ≤ M ≤ 106).
Saída
Para cada caso de teste, imprima uma linha contendo um inteiro igual ao resto de Fib( Fib( N ) ) por M .
Exemplo de Entrada | Exemplo de Saída |
---|---|
1 100 | 1 |
2 100 | 1 |
3 100 | 1 |
4 100 | 2 |
5 100 | 5 |
5 2 | 1 |
6 100 | 21 |
=============================================================================
O meu maior problema é a entrada de vários casos de testes, não sei como se faz isso, só consigo fazer 1 teste de cada vez e acredito que por isso a resposta está errada.
Esse foi o codigo que consegui fazer:
java import java.util.Scanner;
public class Teste {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
if (scan.hasNextInt()) {
int N = scan.nextInt();
int M = scan.nextInt();
int a = (fib(fib(N))) % M;
System.out.println(a);
}
scan.close();
}
public static int fib(int x){
int n1 = 1;
int n2 = 1;
int N = 0;
for(int i = 0; i < x-2; i++){
N = n1 + n2;
n1 = n2;
n2 = N;
}
if(x > 2)return(N);
else return(1);
}
}
Alguém poder me explicar como faço para resolver o problema dos vários testes?
Obrigado.