Compy's Blog
226 words
1 minutes
[BOJ] 무한 수열 2
2024-10-13

무한 수열 2#

TimeLimitMemoryLimitConditionTAG
10s128MB(1 <= N <= 10¹³, 2<= P, Q <= 10⁹,0<= X, Y <= 10⁹)Dynamic Programming(DP)
Ai=1(i0)Ai=AiP-X+AiQ-Y(i1)

N, P, Q, X, Y가 주어질 때, AN을 구하는 프로그램을 작성하시오.

이건 1번에서 뭐 사실 똑같이 풀면 됩니다. 10초라서 디게 쉽게 접근할 수 있었고, 그냥 0이하일 때 1을 반환 하도록 하면 됩니다.

정답 코드
#include <iostream>
#include <map>

using namespace std;

using ll = long long;
map<ll, ll> dp;
ll N, Q, P, X, Y;
ll solution(ll n){
    if(dp.find(n) != dp.end()) return dp[n];
    if(n <= 0) return 1LL;
    ll result = solution((ll)(n/Q)-X) + solution((ll)(n/P)-Y);
    dp.insert({n, result});
    return result;
}

int main(){
    dp.insert({0, 1});
    cin >> N >> Q >> P >> X >> Y;
    
    cout << solution(N);
    
    return 0;
}
[BOJ] 무한 수열 2
https://compy07.github.io/Blog/posts/boj/1354/
Author
뒹굴뒹굴 이정훈 공부방
Published at
2024-10-13