結果

提出番号 1792
提出者 TangentDay
言語 C++
提出日時 2018-08-04 13:54:54
問題名 (72)K-th DigitSum
結果 AC
点数 100%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 14ms 28320KB
2 AC 100% 12ms 23040KB
3 AC 100% 8ms 15648KB
4 AC 100% 4ms 8256KB
5 AC 100% 18ms 29376KB
6 AC 100% 16ms 31488KB
7 AC 100% 16ms 29376KB
8 AC 100% 5ms 10368KB
9 AC 100% 19ms 32544KB
10 AC 100% 18ms 31488KB
11 AC 100% 2ms 7616KB
12 AC 100% 6ms 10368KB
13 AC 100% 9ms 14592KB
14 AC 100% 14ms 24096KB
15 AC 100% 18ms 29376KB
16 AC 100% 13ms 26208KB
17 AC 100% 18ms 30432KB
18 AC 100% 18ms 30432KB
19 AC 100% 10ms 16704KB
20 AC 100% 18ms 28320KB
21 AC 100% 16ms 27264KB
22 AC 100% 4ms 9312KB
23 AC 100% 13ms 21984KB
24 AC 100% 4ms 8432KB
25 AC 100% 3ms 7968KB
26 AC 100% 3ms 7824KB
27 AC 100% 18ms 29376KB
28 AC 100% 18ms 31488KB
29 AC 100% 7ms 12480KB
30 AC 100% 18ms 32544KB
31 AC 100% 21ms 35712KB
32 AC 100% 13ms 23040KB
33 AC 100% 13ms 23040KB
34 AC 100% 11ms 19872KB
35 AC 100% 13ms 21984KB
36 AC 100% 17ms 33600KB
37 AC 100% 20ms 31488KB
38 AC 100% 9ms 15648KB
39 AC 100% 20ms 31488KB
40 AC 100% 15ms 29376KB
41 AC 100% 3ms 8688KB
42 AC 100% 14ms 24096KB
43 AC 100% 5ms 10368KB
44 AC 100% 10ms 18816KB
45 AC 100% 18ms 29376KB
46 AC 100% 11ms 19872KB
47 AC 100% 3ms 8064KB
48 AC 100% 4ms 8432KB
49 AC 100% 15ms 24096KB
50 AC 100% 6ms 10368KB
51 AC 100% 4ms 8304KB

ソースコード

#include <iostream>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <vector>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <deque>
#include <bitset>
#include <algorithm>
#include <complex>
using namespace std;
 
#define REP(i,n) for(int i=0; i<n; ++i)
#define FOR(i,a,b) for(int i=a; i<=b; ++i)
#define FORR(i,a,b) for (int i=a; i>=b; --i)
#define ALL(c) (c).begin(), (c).end()
 
typedef long long ll;
typedef vector<int> VI;
typedef vector<ll> VL;
typedef vector<VL> VVL;
typedef vector<VI> VVI;
typedef pair<int,int> P;
typedef pair<ll,ll> PL;

int in() { int x; scanf("%d", &x); return x; }
ll lin() { ll x; scanf("%lld", &x); return x; }

const ll INF = 1e18;

int main() {
    ll n, k;
    cin >> n >> k;
    ll m = 1010;
    VVL dp(m+1, VL(n+1));
    dp[0][0] = 1;
    REP(i,m){
        REP(j,n+1) REP(k,10){
            if (j + k <= n){
                dp[i+1][j+k] = min(INF, dp[i][j] + dp[i+1][j+k]);
            }
        }
    }

    VI ans(m);
    REP(i,m){
        REP(j,10){
            if (dp[m-i-1][n-j] < k){
                k -= dp[m-i-1][n-j];
            }else{
                ans[i] = j;
                n -= j;
                break;
            }
        }
    }

    bool f = true;
    REP(i,m){
        if (ans[i] == 0 && f) continue;
        f = false;
        cout << ans[i];
    }
    cout << endl;

    return 0;
}