Advertisement
Guest User

Untitled

a guest
Oct 15th, 2019
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned long long ull;
  5. typedef long double ld;
  6. typedef pair <int, int> pii;
  7. typedef tuple<int, int, int> tiii;
  8. typedef tuple<int, int, int, int> tiiii;
  9. /*typedef set <int> si;
  10. typedef map <int, int> mii;
  11. typedef vector <int> vi;
  12. typedef vector <ll> vll;
  13. typedef vector <vector <int>> vvi;*/
  14. #define F(i, a, b) for(int i = a; i <= (int)b; i++)
  15. #define f(i, a, b) for(int i = a; i >= (int)b; i--)
  16. #define F2(i, a, b) for(int i = a; i <= (int)b; i+=2)
  17. #define f2(i, a, b) for(int i = a; i >= (int)b; i-=2)
  18. #define wh(n) int iteration = n; while(iteration--)
  19. #define For(t, it) for(auto it = (t).begin(); it != (t).end(); ++it)
  20. #define IN insert
  21. #define PB push_back
  22. #define MP make_pair
  23. #define MT make_tuple
  24. #define RS resize
  25. #define GRAF(n) vvi gr; gr.resize(n+1); vector <bool> was; was.resize(n+1, 0);
  26.  
  27. ll bin_pow(ll a, ll n){
  28. if(!n) return 1ll;
  29. if(n % 2) return a*1ll*bin_pow(a, n-1);
  30. ll k = bin_pow(a, n/2);
  31. return k*1ll*k;
  32. }
  33.  
  34. ll log(ll n, ll a){
  35. if(n <= 1) return 1;
  36. return 1 + log(n/a, a);
  37. }
  38.  
  39. ll sum(ll b, ll q, ll n){
  40. n = bin_pow(q, n) - 1;
  41. return b*1ll*n/(q-1);
  42. }
  43.  
  44. int main(){
  45. ios_base::sync_with_stdio(false);
  46. cin.tie(NULL);
  47. #ifdef LOCAL
  48. freopen("input.txt", "r", stdin);
  49. freopen("output.txt", "w", stdout);
  50. #endif
  51. ll n, a, b, mx;
  52. cin >> n >> a >> b >> mx;
  53. if(b == 1){
  54. cout << min(mx/a, n);
  55. return 0;
  56. }
  57. ll st = log(9*1ll*(mx + a/(b-1)), b);
  58. if(st > n) st = n;
  59. while(st){
  60. if(sum(a, b, st) <= mx) break;
  61. st--;
  62. }
  63. cerr << log(1, 2) << '\n' << log(2, 2) << '\n' << log(3, 2) << '\n' << log(4, 2);
  64. cout << st;
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement