728x90
728x90
각 자리의 숫자들이 단조 증가하는 수열을 구하는 문제이다.
1의 자리 숫자들은 문제에서 이야기하는 줄어들지 않음을 만족하므로 그 갯수를 1로 채우고 바텀업 DP를 통해 나머지 자리수들의 값을 채워나가면 된다.
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll dp[10][64];
int main()
{
for (int a = 0; a < 10; ++a)
dp[a][0] = 1;
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
for (int i = 1; i < 64; ++i)
for (int j = 0; j < 10; ++j)
for (int k = j; k >= 0; --k)
dp[j][i] += dp[k][i - 1];
int t; cin >> t;
while (t--)
{
ll res = 0;
int digit;
cin >> digit;
for (int j = 0; j < 10; ++j)
res += dp[j][digit - 1];
cout << res << '\n';
}
}
728x90
728x90
'백준 > DP' 카테고리의 다른 글
백준 2056 - 작업 (0) | 2020.07.11 |
---|---|
백준 1915 - 가장 큰 정사각형 (0) | 2020.06.22 |
백준 2624 - 동전 바꿔주기 (0) | 2020.05.19 |
백준 3980 - 선발 명단 (0) | 2020.05.18 |
백준 15468 - 퇴사 2 (0) | 2020.05.13 |