結果
問題 | No.1953 8 |
ユーザー |
![]() |
提出日時 | 2022-05-19 13:32:28 |
言語 | C++14 (gcc 13.3.0 + boost 1.87.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,712 bytes |
コンパイル時間 | 3,955 ms |
コンパイル使用メモリ | 235,260 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-17 19:40:13 |
合計ジャッジ時間 | 7,705 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 29 WA * 1 |
ソースコード
//g++ 2.cpp -std=c++14 -O2 -I .#include <bits/stdc++.h>using namespace std;#include <atcoder/all>using namespace atcoder;using ll = long long;using ld = long double;using vi = vector<int>;using vvi = vector<vi>;using vll = vector<ll>;using vvll = vector<vll>;using vld = vector<ld>;using vvld = vector<vld>;using vst = vector<string>;using vvst = vector<vst>;#define fi first#define se second#define pb push_back#define eb emplace_back#define pq_big(T) priority_queue<T,vector<T>,less<T>>#define pq_small(T) priority_queue<T,vector<T>,greater<T>>#define all(a) a.begin(),a.end()#define rep(i,start,end) for(ll i=start;i<(ll)(end);i++)#define per(i,start,end) for(ll i=start;i>=(ll)(end);i--)#define uniq(a) sort(all(a));a.erase(unique(all(a)),a.end())vi a = {1,0,0,0,1,0,1,0,2,1};map<ll,ll> seen;ll f(ll n){ll res=0;while(n>0){res+=a[n%10];n/=10;}return res;}// 1 to nll count(ll n){ll res=0;if(seen[n]!=0){return seen[n];}if(n<10){rep(i,1,n+1){res+=a[i];}seen[n]=res;return res;}ll x=n/10,y=n%10;res+=6*x;// 1 から x-1 まで 10個ずつres+=10*count(x-1);res+=f(x);rep(i,10*x+1,n+1){res+=f(i);}seen[n]=res;return res;}int main(){ios::sync_with_stdio(false);cin.tie(nullptr);rep(i,0,300){ll naive=0;ll opt=count(i);rep(j,0,i+1){naive+=f(j);}assert(naive==opt);}ll k;cin>>k;ll ng=-1,ok=1e17;while(ok-ng>1){ll ch=(ng+ok)/2;//cout<<ch<<endl;if(count(ch)>=k){ok=ch;}else{ng=ch;}}if(count(ok)==k){cout<<ok<<endl;return 0;}cout<<-1<<endl;}