Advertisement
Zeinab_Hamdy

Untitled

Oct 11th, 2023 (edited)
697
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.83 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define nl "\n"
  4. #define fi first
  5. #define se second
  6. #define pb push_back
  7. #define ll long long
  8. #define ull unsigned ll
  9. #define RV  return void
  10. // #define inf 2000000000
  11. #define sz(x) int(x.size())
  12. #define all(v) v.begin(), v.end()
  13. #define rall(v) v.rbegin(), v.rend()
  14. #define Mini(x) *min_element(all(x))
  15. #define Maxi(x) *max_element(all(x))
  16. #define fixed(n) fixed << setprecision(n)
  17. #define ceil(w, m) (((w) / (m)) + ((w) % (m) ? 1 : 0))
  18. #define cin(v) for (auto&i:v) cin >> i;
  19. #define cout(v) for (auto&i:v) cout << i << " ";
  20. #define clr(memo, x) memset(memo, x, sizeof memo)
  21. #define updmin(a, b) a = min(a, b)
  22. #define updmax(a, b) a = max(a, b)
  23. #define vi vector < int >
  24. #define vl vector < ll >
  25. #define vc vector < char >
  26. #define vs vector < string >
  27. #define v2i vector < vector < int > >
  28. #define v2l vector < vector < int > >
  29. #define seti set < int >
  30. #define setl set < ll >
  31. #define mapii map < int , int >
  32. #define mapll map < ll , ll >
  33. #define mapli map < ll , int >
  34. #define mapci map < char , int >
  35. #define mapsi map < string , int >
  36. #define pll pair < ll , ll >
  37. #define pii pair < int , int >
  38. #define range(l,r,x) for(int i=l ; i < r ; i+=x)
  39. #define FastCode ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr);
  40. vector < string > ternary= {"NO\n" , "YES\n"};
  41.  
  42. void  Zainab(){
  43.             #ifndef ONLINE_JUDGE
  44.               freopen("input.txt", "r", stdin);
  45.               freopen("output.txt", "w", stdout);
  46.             #endif
  47. }
  48.  
  49.  
  50. /*================================  solution  ================================ */
  51.  
  52. ll dp [13][2];
  53.  
  54. string S ;
  55.  
  56.  
  57.  
  58. ll rec(int idx , bool sm ){
  59.     if(idx >= sz(S)) return 1;
  60.  
  61.     ll &ret = dp[idx][sm];
  62.     if(~ret) return ret;
  63.  
  64.     ret =0;
  65.     for(int i =0 ; i <= 9 ; i++){
  66.         if(i==4) continue;
  67.         if(i > S[idx]-'0' and !sm) break;
  68.         ret += rec(idx+1 , sm or  i < S[idx]-'0');
  69.     }
  70.    
  71.     return ret ;
  72. }
  73.  
  74.  
  75. void build(int idx , bool sm , ll sum ){
  76.    
  77.    
  78.     if(idx >= sz(S)) return ;
  79.    
  80.    
  81.      
  82.     for(int i =0 ; i <= 9 ; i++){
  83.         if(i==4) continue;
  84.         if(i > S[idx]-'0' and !sm) break;;
  85.        
  86.  
  87.         ll  ret = rec(idx+1 , sm or  i < S[idx]-'0');
  88.  
  89.         if(ret < sum ) sum-=ret;
  90.         else {
  91.             cout << i ;
  92.             build(idx+1 , sm or  i < S[idx]-'0' , sum );
  93.             return ;
  94.         }
  95.     }
  96.    
  97. }
  98.  
  99.  
  100. void myCode(){
  101.  
  102.  
  103.  
  104. ll k;
  105. cin >> k ;
  106.  
  107. clr(dp,-1);
  108. S=to_string(k);
  109.  
  110. while(sz(S) < 13) S = "0"+S;
  111.  
  112.  
  113. build(0,0,k);
  114. cout << nl;
  115.  
  116.  
  117.  
  118. }
  119.  
  120.  
  121. int main(){
  122.  
  123. FastCode ;
  124. Zainab() ;
  125.  
  126.  
  127.  
  128.  
  129.  
  130.             int testCase=1;
  131.                 cin >> testCase ;
  132.             for(int i=1 ; i<= testCase ; i++){
  133.                 //  cout << "Case #" << i << ": ";
  134.                 myCode();
  135.             }
  136.      
  137.  
  138.     return 0;
  139. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement