※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 24417번 문제인 알고리즘 수업 - 피보나치 수 2이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/24417
24417번: 알고리즘 수업 - 피보나치 수 2
코드1 코드2 실행 횟수를 1,000,000,007로 나눈 나머지를 한 줄에 출력한다.
www.acmicpc.net
첫 번째 의사코드는 결국 1들의 합으로 N번째 피보나치 수를 계산해내므로 "코드1"은 N번째 피보나치 수와 같은 횟수만큼 실행된다. 코드2와 같은 방식으로 N번째 피보나치 수(mod N)을 계산하고 출력해주자.
두 번째 의사코드는 N이 1 또는 2라면 실행되지 않을 것이고, 그렇지 않다면 반복문의 횟수만큼 실행될 것이므로 N-2회 실행될 것이다. 문제의 입력조건에서 N은 5 이상으로 주어졌으므로 N-2를 출력하게 구현해도 무방하다.
아래는 제출한 소스코드이다.
#include <iostream>
using namespace std;
typedef long long ll;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int N; cin >> N;
ll A = 1, B = 1;
for (int i = 2; i < N; i++) {
ll tmp = A + B;
if (tmp > 1000000006) tmp -= 1000000007;
swap(A, B); swap(B, tmp);
}
cout << B << ' ' << N - 2;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 5874 // C++] 소를 찾아라 (0) | 2022.02.21 |
---|---|
[BOJ 24416 // C++] 알고리즘 수업 - 피보나치 수 1 (0) | 2022.02.20 |
[BOJ 24391 // C++] 귀찮은 해강이 (0) | 2022.02.19 |
[BOJ 24228 // C++] 젓가락 (0) | 2022.02.18 |
[BOJ 24393 // C++] 조커 찾기 (0) | 2022.02.17 |