結果

提出番号 1808
提出者 yamad
言語 C++
提出日時 2018-08-04 14:00:12
問題名 (72)K-th DigitSum
結果 WA
点数 0%

テストケース

テストケース 結果 得点 実行時間 メモリ使用量
1 AC 100% 23ms 51552KB
2 AC 100% 15ms 37408KB
3 AC 100% 6ms 17936KB
4 WA 0% 3ms 8000KB
5 AC 100% 26ms 55584KB
6 AC 100% 26ms 58400KB
7 AC 100% 24ms 54752KB
8 WA 0% 4ms 10816KB
9 AC 100% 34ms 60688KB
10 AC 100% 25ms 59072KB
11 WA 0% 2ms 8704KB
12 AC 100% 4ms 10992KB
13 AC 100% 6ms 17424KB
14 AC 100% 17ms 38432KB
15 AC 100% 22ms 54944KB
16 AC 100% 18ms 44880KB
17 AC 100% 26ms 57376KB
18 AC 100% 27ms 56752KB
19 AC 100% 8ms 19984KB
20 AC 100% 23ms 52672KB
21 AC 100% 21ms 49216KB
22 AC 100% 3ms 8864KB
23 AC 100% 14ms 34144KB
24 WA 0% 2ms 8720KB
25 WA 0% 2ms 7760KB
26 WA 0% 2ms 8192KB
27 AC 100% 25ms 53952KB
28 AC 100% 28ms 58320KB
29 AC 100% 4ms 12528KB
30 AC 100% 33ms 60880KB
31 AC 100% 33ms 66544KB
32 AC 100% 14ms 35120KB
33 AC 100% 16ms 35808KB
34 AC 100% 11ms 27440KB
35 AC 100% 13ms 34480KB
36 AC 100% 32ms 63264KB
37 AC 100% 25ms 59568KB
38 AC 100% 7ms 17792KB
39 AC 100% 25ms 59520KB
40 AC 100% 26ms 55568KB
41 WA 0% 2ms 8128KB
42 AC 100% 15ms 40144KB
43 WA 0% 3ms 9760KB
44 AC 100% 10ms 25392KB
45 AC 100% 24ms 55200KB
46 AC 100% 12ms 27504KB
47 WA 0% 2ms 8176KB
48 WA 0% 2ms 8400KB
49 AC 100% 17ms 41104KB
50 AC 100% 4ms 10704KB
51 AC 100% 3ms 8112KB

ソースコード

#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef pair<ll, ll> P;

#define fi first
#define se second
#define repl(i,a,b) for(ll i=(ll)(a);i<(ll)(b);i++)
#define rep(i,n) repl(i,0,n)
#define all(x) (x).begin(),(x).end()
#define dbg(x) cout<<#x"="<<x<<endl
#define mmax(x,y) (x>y?x:y)
#define mmin(x,y) (x<y?x:y)
#define maxch(x,y) x=mmax(x,y)
#define minch(x,y) x=mmin(x,y)
#define uni(x) x.erase(unique(all(x)),x.end())
#define exist(x,y) (find(all(x),y)!=x.end())
#define bcnt __builtin_popcount

#define INF 1e16
#define mod 1000000007

ll N,K;
ll dp[1001][1001][2];

int main(){
  cin>>N>>K;
  dp[0][0][0]=1;
  rep(i,N)rep(j,N+1)rep(k,2){
    rep(d,10){
      if(j+d<=N)dp[i+1][j+d][k==1||d>0]+=dp[i][j][k];
    }
  }
  ll d=1;
  while(dp[d][N][1]<K){
    K-=dp[d][N][1];
    d++;
  }
  string res;
  ll rest=N;
  rep(i,d){
    repl(k,i==0?1:0,10){
      ll nrest=rest-k;
      if(dp[d-1-i][nrest][(i==d-1?0:1)]<K){
        K-=dp[d-1-i][nrest][(i==d-1?0:1)];
      }else{
        res+=to_string(k);
        rest-=k;
        break;
      }
    }
  }
  cout<<res<<endl;
  return 0;
}