[난이도] Gold4
[유형] DP
[풀이]
dp[n] = dp[n/P]+dp[n/Q]
N 제한이 크므로 map을 이용한다.
#include <cstdio>
#include <map>
using namespace std;
using ll = long long;
ll N;
map<ll,ll> m;
int P,Q;
ll sol(ll n){
if(n==0) return 1;
if(m.find(n) != m.end()) return m[n];
return m[n] = sol(n/P)+sol(n/Q);
}
int main(){
scanf("%lld%d%d",&N,&P,&Q);
printf("%lld",sol(N));
}
github.com/has2/Problem-Solving/blob/master/boj-solved.ac/Gold4/1351.cpp
'Problem-Solving > BOJ' 카테고리의 다른 글
[BOJ/백준][Gold4] 14002 : 가장 긴 증가하는 부분수열 4 (C++) (0) | 2020.12.13 |
---|---|
[BOJ/백준][Gold4] 13913 : 숨바꼭질4 (C++) (0) | 2020.12.13 |
[BOJ/백준][Gold4] 1339 : 단어 수학 (C++) (0) | 2020.12.13 |
[BOJ/백준][Gold4] 1199 : 오일러 회로(C++) (0) | 2020.12.12 |
[BOJ/백준][Gold4] 11657 : 타임머신(C++) (0) | 2020.12.12 |