본문 바로가기
Algorithm/📖Baekjoon

#9471 피사노 주기

by yewoneeee 2022. 4. 8.

# 문제

# 풀이

원래 2749번을 먼저 풀고 있었는데 도저히 모르겠어서 구글링해보니 이 문제를 먼저 풀고 2749번 푸는것을 추천하더라

그래서 이문제부터 풀어봤다

 

이것도 뭔소린지 모르겠어서 구글링했다ㅋㅋㅋ

http://melonicedlatte.com/algorithm/2018/08/28/022247.html

 

[백준] 9471번 C/C++ 풀이 _ 피사노 주기 - Easy is Perfect

시간 제한메모리 제한제출정답맞은 사람정답 비율1 초128 MB28321518681.938% 문제1960년, IBM의 직원 Donald Wall은 피보나치 수열을 m으로 나눈 나머지가 주기를 이룬다는 것을 증명했다.예를 들어, 피보

melonicedlatte.com

위 블로그를 보고 이해했음

 

#include <iostream>
#include <vector>
using namespace std;

int main() {
	int T;
	cin >> T;
	for (int i = 0; i < T; i++) {
		int num, m;
		cin >> num >> m;
		vector<int> fibo;
		fibo.push_back(0);
		fibo.push_back(1);
		fibo.push_back(1); // 두 번째 피보나치수열까진 그냥 삽입

		int n = 3; // 세 번째 피보나치수열부턴 앞의 두 수를 덧셈하는 방식
		while (true) {
			// 나머지가 0, 1이 연속으로 나올 때 까지 계산
			fibo.push_back((fibo.at(n - 1) + fibo.at(n - 2)) % m);
			if (fibo.at(n - 1) % m == 0 && fibo.at(n) % m == 1)
				break;
			n++;
		}
		cout << num << " " << n - 1 << "\n";
	}
}

 

'Algorithm > 📖Baekjoon' 카테고리의 다른 글

#10830 행렬 제곱  (0) 2022.04.09
#2749 피보나치 수 3  (0) 2022.04.08
#1655 가운데를 말해요  (0) 2022.04.05
#12865 평범한 배낭  (0) 2022.04.03
#2869 달팽이는 올라가고 싶다 문제  (0) 2022.02.13

댓글