fork download
  1. #include <bits/stdc++.h>
  2. #define ll long long
  3.  
  4. #include <ext/pb_ds/assoc_container.hpp>
  5. #include <ext/pb_ds/tree_policy.hpp>
  6. using namespace __gnu_pbds;
  7. #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
  8.  
  9. using namespace std;
  10.  
  11. ll factorial(ll n) { ll f=1; for (ll i=1;i<=n; i++) f*=i; return f; }
  12. ll gcd(ll a,ll b) { while(b) { ll x = a; a = b; b = x % b; } return a; }
  13. ll lcm(ll a,ll b) { return a / gcd(a, b) * b; }
  14. ll Closest_to_right(ll x, vector <ll> n) {
  15. ll l=0, r=n.size(),md;
  16. while (l+1 < r) {
  17. md = l + (r-l)/2;
  18. if (n[md] >= x) r = md;
  19. else l = md;
  20. }
  21. return r;
  22. }
  23. ll Closest_to_left(ll x, vector <ll> n) {
  24. ll l=0, r=n.size(),md;
  25. while (l+1 < r) {
  26. md = l + (r-l)/2;
  27. if (n[md] > x) r = md;
  28. else l = md;
  29. }
  30. return l;
  31. }
  32.  
  33.  
  34. ll sum(ll x, ll k) {
  35.  
  36. ll s=0;
  37.  
  38. while (x != 0) {
  39. s += x;
  40. x /= k;
  41. }
  42.  
  43. return s;
  44.  
  45. }
  46.  
  47. int main()
  48. {
  49. ios::sync_with_stdio(false);
  50. cin.tie(nullptr), cout.tie(nullptr);
  51.  
  52.  
  53. int n, k; cin >> n >> k;
  54.  
  55.  
  56. ll l=1, r=1e9, md = l + (r-l)/2;
  57.  
  58. while (r-l > 1) {
  59.  
  60. md = l + (r-l)/2;
  61.  
  62. if (sum(md, k) >= n) r = md;
  63. else l = md;
  64.  
  65. }
  66.  
  67. cout << r;
  68.  
  69.  
  70. return 0;
  71.  
  72. }
  73.  
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
406775906