提出 #11532810
ソースコード 拡げる
//Patwari26
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define endl '\n'
#define mii map<ll,ll>
#define pii pair<ll,ll>
#define vi vector<ll>
#define all(a) (a).begin(),(a).end()
#define F first
#define S second
#define sz(x) (ll)x.size()
#define hell 1000000007
#define INF (1ll<<60)
#define rep(i,a,b) for(ll i=a;i<=b;i++)
#define rrep(i,a,b) for(ll i=a;i>=b;i--)
#define ios ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define time cerr << "\nTime elapsed: " << 1000 * clock() / CLOCKS_PER_SEC << "ms\n";
ll gcd(ll a, ll b) { return b == 0 ? a : gcd(b, a % b); }
ll lcm(ll a, ll b) { return a * (b / gcd(a, b)); }
const int N=12;
ll m,n;
string s,t;
ll dp[12][N][2][2];
//code for all the nummbers divisible by m
ll digitdp(ll zero,ll last,ll idx,ll lt,ll rt){ // lt=0(fixed) lt=1(free)
if(idx==n) return 1;
if(dp[last][idx][lt][rt]!=-1) return dp[last][idx][lt][rt];
ll &curr=dp[last][idx][lt][rt];
curr=0;
ll mi=0,mx=9;
if(!lt) mi=s[idx]-'0';
if(!rt) mx=t[idx]-'0';
rep(i,mi,mx){
ll nlt=(lt|(i>s[idx]-'0'));
ll nrt=(rt|(i<t[idx]-'0'));
if(idx>=1){
if(abs(last-i)<=1 || (zero==idx)) {
if(i!=0) curr=(curr+digitdp(zero,i,idx+1,nlt,nrt));
else curr=(curr+digitdp(zero+1,i,idx+1,nlt,nrt));
}
}
else {
if(i!=0)
curr=(curr+digitdp(zero,i,idx+1,nlt,nrt));
else curr=(curr+digitdp(zero+1,i,idx+1,nlt,nrt));
}
}
return curr;
}
ll check(ll num){
s="";
t="";
while(num!=0){
t.pb((char)(num%10+'0'));
s.pb('0');
num/=10;
}
reverse(all(t));
// cout<<s<<" "<<t<<endl;
n=sz(t);
// cout<<n<<" ";
memset(dp,-1,sizeof(dp));
ll fin=digitdp(0,0,0,0,0);
// cout<<fin<<endl;
return fin-1;
}
void solve(){
ll k;
cin>>k;
ll lo=1,hi=3234566667;
ll ans=-1;
while(lo<=hi){
ll mid=(lo+hi)/2;
// cout<<mid<<endl;
if(check(mid)>=k){
ans=mid;
hi=mid-1;
}
else lo=mid+1;
}
// cout<<check(32)<<endl;
cout<<ans;
}
signed main()
{
ios
int TESTS=1;
//cin>>TESTS;
while(TESTS--){
solve();
}
time
return 0;
}
提出情報
提出日時 |
|
問題 |
D - Lunlun Number |
ユーザ |
patwari26 |
言語 |
C++14 (GCC 5.4.1) |
得点 |
400 |
コード長 |
2512 Byte |
結果 |
AC |
実行時間 |
1 ms |
メモリ |
256 KiB |
ジャッジ結果
セット名 |
Sample |
All |
得点 / 配点 |
0 / 0 |
400 / 400 |
結果 |
|
|
セット名 |
テストケース |
Sample |
sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
All |
etc_01.txt, etc_02.txt, etc_03.txt, etc_04.txt, etc_05.txt, etc_06.txt, etc_07.txt, etc_08.txt, etc_09.txt, etc_10.txt, etc_11.txt, etc_12.txt, etc_13.txt, etc_14.txt, etc_15.txt, etc_16.txt, etc_17.txt, etc_18.txt, rand_01.txt, rand_02.txt, rand_03.txt, rand_04.txt, rand_05.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt |
ケース名 |
結果 |
実行時間 |
メモリ |
etc_01.txt |
AC |
1 ms |
256 KiB |
etc_02.txt |
AC |
1 ms |
256 KiB |
etc_03.txt |
AC |
1 ms |
256 KiB |
etc_04.txt |
AC |
1 ms |
256 KiB |
etc_05.txt |
AC |
1 ms |
256 KiB |
etc_06.txt |
AC |
1 ms |
256 KiB |
etc_07.txt |
AC |
1 ms |
256 KiB |
etc_08.txt |
AC |
1 ms |
256 KiB |
etc_09.txt |
AC |
1 ms |
256 KiB |
etc_10.txt |
AC |
1 ms |
256 KiB |
etc_11.txt |
AC |
1 ms |
256 KiB |
etc_12.txt |
AC |
1 ms |
256 KiB |
etc_13.txt |
AC |
1 ms |
256 KiB |
etc_14.txt |
AC |
1 ms |
256 KiB |
etc_15.txt |
AC |
1 ms |
256 KiB |
etc_16.txt |
AC |
1 ms |
256 KiB |
etc_17.txt |
AC |
1 ms |
256 KiB |
etc_18.txt |
AC |
1 ms |
256 KiB |
rand_01.txt |
AC |
1 ms |
256 KiB |
rand_02.txt |
AC |
1 ms |
256 KiB |
rand_03.txt |
AC |
1 ms |
256 KiB |
rand_04.txt |
AC |
1 ms |
256 KiB |
rand_05.txt |
AC |
1 ms |
256 KiB |
sample_01.txt |
AC |
1 ms |
256 KiB |
sample_02.txt |
AC |
1 ms |
256 KiB |
sample_03.txt |
AC |
1 ms |
256 KiB |
sample_04.txt |
AC |
1 ms |
256 KiB |