PS/BOJ
백준 1351번: 무한 수열 (C++)
도비(Doby)
2022. 10. 30. 19:34
https://www.acmicpc.net/problem/1351
1351번: 무한 수열
첫째 줄에 3개의 정수 N, P, Q가 주어진다.
www.acmicpc.net
Solved By: DP, Map
문제에서는 점화식이 주어졌으나 N의 범위가 너무 커서 배열로 다루기엔 불가능합니다.
그래서 map을 사용하여 Top-Down DP를 돌려주었습니다.
#include <iostream>
#include <map>
using namespace std;
typedef long long ll;
ll N, P, Q;
map<ll, ll> m;
ll solve(ll n){
if(n == 0) return 1; // base case
if(m[n] != 0) return m[n];
return m[n] = solve(n / P) + solve(n / Q);
}
int main(){
cin >> N >> P >> Q;
cout << solve(N);
return 0;
}