fork download
  1. #include <bits/stdc++.h>
  2. #include <ext/pb_ds/assoc_container.hpp>
  3. #define fast cin.tie(0); cin.sync_with_stdio(0);
  4. #define ll long long
  5. #define ull unsigned long long
  6. #define ld long double
  7. #define oo (ll)1e9
  8. #define OO (ll)1e18
  9. #define PI 3.14159265359
  10. #define ordered_set tree<pair<ll,ll>, null_type, less<pair<ll,ll>>, rb_tree_tag, tree_order_statistics_node_update>
  11. using namespace std;
  12. using namespace __gnu_pbds;
  13. const ll mod = 1e9 + 7;
  14. const ll MOD = 998244353;
  15. const int MX = 2e2 + 5;
  16. int t = 1;
  17. // Here We Go! //
  18. ll refl(ll x)
  19. {
  20. string r = to_string(x);
  21. string res = "";
  22. int n = r.size();
  23. for(int i = 0 ; i < n ; i++) {
  24. int d = r[i] - '0';
  25. d = 9 - d;
  26. res += char(d + '0');
  27. }
  28. return stoll(res);
  29. }
  30. void upize(ll &l , ll limit)
  31. {
  32. ll ret = 1;
  33. while(ret * 10 < limit) ret *= 10;
  34. l = max(l , ret);
  35. }
  36. void downize(ll &r ,ll l)
  37. {
  38. ll ret = 1;
  39. while(ret < r) ret *= 10;
  40. if(ret == r){
  41. cout << r * refl(r);
  42. exit(0);
  43. }
  44. ll mid = ret / 2;
  45. r = min(r , max(l , mid));
  46. }
  47. void solve()
  48. {
  49. ll l , r;
  50. cin >> l >> r;
  51. ll mx = 0;
  52. ll R = r;
  53. downize(r , l);
  54. upize(l , r);
  55. while(l <= r){
  56. ll mid = (l + r) >> 1;
  57. ll curMx = mid * refl(mid);
  58. if(curMx > mx){
  59. mx = curMx;
  60. l = mid + 1;
  61. }
  62. else r = mid - 1;
  63. }
  64. cout << mx << "\n";
  65. }
  66. int main()
  67. {
  68. fast
  69. // freopen("input.txt" , "r" , stdin);
  70. // freopen("output.txt" , "w" , stdout);
  71. // cin >> t;
  72. while(t--)
  73. solve();
  74. return 0;
  75. }
  76.  
Success #stdin #stdout 0.01s 5400KB
stdin
Standard input is empty
stdout
0