Facebook
From emanlaicepsa, 1 Month ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 24
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define fi first
  5. #define se second
  6. #define pb emplace_back
  7. #define all(n) (n).begin(),(n).end()
  8. #define mem(n,x) memset(n,x,sizeof(n))
  9. #define IOS ios::sync_with_stdio(0),cin.tie(0)
  10. #define pii pair<ll,ll>
  11. #define vi vector<ll>
  12. #define dbg(...) cerr<<#__VA_ARGS__<<" = ";_do(__VA_ARGS__);
  13. template<typename A> void _do(A x){ cerr<<x<<"\n"; }
  14. template<typename A, typename ...B> void _do(A x, B ...y){ cerr<<x<<", "; _do(y...);}
  15.  
  16. ll x, y, base;
  17.  
  18. ll val(ll x,vi & v){
  19.         ll ans = 0;
  20.         for(auto &i:v){
  21.                 if( ans*1.0*x + i > 1e18 ) return 2e18;
  22.                 ans = ans * x + i;
  23.         }
  24.         return ans;
  25. }
  26.  
  27. ll ok(vi &v){
  28.         /* for(auto i:v) cout<<i<<" "; cout<<'\n'; */
  29.         ll l = 1, r = 1e18;
  30.         while(l < r){
  31.                 ll m = (l+r) / 2;
  32.                 if(val(m, v) >= x) r = m;
  33.                 else l = m + 1;
  34.         }
  35.         if(val(l, v) == x) return l;
  36.         else return -1;
  37. }
  38.  
  39. signed main(){
  40.         IOS;
  41.         cin>>x>>y;
  42.         for(ll i=10;i*i*i<=x;i++){
  43.                 ll ans = 0, n = x, mul = 1;
  44.                 while(n){
  45.                         if(n % i >= 10) break;
  46.                         ans += n%i * mul;
  47.                         mul *= 10;
  48.                         n /= i;
  49.                         if(!n && ans >= y){
  50.                                 base = i;
  51.                         }
  52.                 }
  53.         }
  54.         for(ll i=y;i<1000;i++){
  55.                 vector<ll> arr;
  56.                 ll x = i;
  57.                 while(x){
  58.                         arr.pb(x%10);
  59.                         x/=10;
  60.                 }
  61.                 reverse(all(arr));
  62.                 ll res = ok(arr);
  63.                 if(res != -1){
  64.                         base = max(base, res);
  65.                 }
  66.         }
  67.         cout<<base<<'\n';
  68. }
  69.  
  70.