https://www.acmicpc.net/problem/9471
문제 :
m 이라는 숫자가 주어졌을 때
피보나치 수열에서 m 으로 나누었을 때의 나머지 값이 수열을 이룬다고 한다.
이 때 이루는 수열의 크기를 구하는 문제
수열 시작이 1, 1, ... 으로 시작하므로
다음 나머지 값이 1, 1이 되는 시점을 찾으면 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(reader.readLine());
StringBuilder builder = new StringBuilder();
for(int i = 0; i<n; i++) {
String[] tmp = reader.readLine().split(" ");
int m = Integer.parseInt(tmp[1]);
int a = 1;
int b = 1;
int count = 0;
while(true) {
int next = (a + b) % m;
a = b;
b = next;
count ++;
if (a == 1 && b == 1) {
break;
}
}
builder.append(i + 1).append(" ").append(count).append("\n");
}
System.out.println(builder);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 11066번. 파일 합치기 (Java) (0) | 2023.06.08 |
---|---|
[백준] 2749번. 피보나치 수 3 (Java) (0) | 2023.06.07 |
[백준] 1655번. 가운데를 말해요 (Java) (0) | 2023.06.07 |
[백준] 1303번 전쟁 - 전투 (Java) (0) | 2023.03.09 |
[백준] 1629번 곱셈 (0) | 2023.02.08 |