(2022-04-08 재채점 이후 수정)

※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 2502번 문제인 떡 먹는 호랑이이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/2502 

 

2502번: 떡 먹는 호랑이

첫줄에 첫 날에 준 떡의 개수 A를 출력하고 그 다음 둘째 줄에는 둘째 날에 준 떡의 개수 B를 출력한다. 이 문제에서 주어진 D, K에 대해서는 항상 정수 A, B (1≤A≤B)가 존재한다. 

www.acmicpc.net

첫 날에 준 떡의 개수를 A개, 둘째 날에 준 떡의 개수를 B개라고 하면, D번째 날에 준 떡의 개수를 피보나치 수열을 이용하여 A와 B로 나타낼 수 있다. 이를 이용하여 문제를 해결하면 된다.

 

A와 B가 0이 되면 안 된다는 조건을 놓치지 말고 구현하자.

 

아래는 제출한 소스코드이다.

#include <iostream>
using namespace std;

int fib[31];

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	fib[1] = fib[2] = 1;
	for (int i = 3; i < 31; i++) fib[i] = fib[i - 1] + fib[i - 2];

	int D, K; cin >> D >> K;
	int x = fib[D - 2], y = fib[D - 1];
	int A = 1, B = 0;
	K -= x;
	while (K % y > 0) {
		A++;
		K -= x;
	}
	B = K / y;
	cout << A << '\n' << B;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 15916 // C++] 가희는 그래플러야!!  (0) 2021.08.04
[BOJ 11378 // C++] 열혈강호 4  (0) 2021.08.03
[BOJ 1747 // C++] 소수&팰린드롬  (0) 2021.08.01
[BOJ 11401 // C++] 이항 계수 3  (0) 2021.07.31
[BOJ 1072 // C++] 게임  (0) 2021.07.30

+ Recent posts