Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- typedef long long ll;
- typedef unsigned long long ull;
- typedef long double ld;
- typedef pair <int, int> pii;
- typedef tuple<int, int, int> tiii;
- typedef tuple<int, int, int, int> tiiii;
- /*typedef set <int> si;
- typedef map <int, int> mii;
- typedef vector <int> vi;
- typedef vector <ll> vll;
- typedef vector <vector <int>> vvi;*/
- #define F(i, a, b) for(int i = a; i <= (int)b; i++)
- #define f(i, a, b) for(int i = a; i >= (int)b; i--)
- #define F2(i, a, b) for(int i = a; i <= (int)b; i+=2)
- #define f2(i, a, b) for(int i = a; i >= (int)b; i-=2)
- #define wh(n) int iteration = n; while(iteration--)
- #define For(t, it) for(auto it = (t).begin(); it != (t).end(); ++it)
- #define IN insert
- #define PB push_back
- #define MP make_pair
- #define MT make_tuple
- #define RS resize
- #define GRAF(n) vvi gr; gr.resize(n+1); vector <bool> was; was.resize(n+1, 0);
- ll bin_pow(ll a, ll n){
- if(!n) return 1ll;
- if(n % 2) return a*1ll*bin_pow(a, n-1);
- ll k = bin_pow(a, n/2);
- return k*1ll*k;
- }
- ll log(ll n, ll a){
- if(n <= 1) return 1;
- return 1 + log(n/a, a);
- }
- ll sum(ll b, ll q, ll n){
- n = bin_pow(q, n) - 1;
- return b*1ll*n/(q-1);
- }
- int main(){
- ios_base::sync_with_stdio(false);
- cin.tie(NULL);
- #ifdef LOCAL
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #endif
- ll n, a, b, mx;
- cin >> n >> a >> b >> mx;
- if(b == 1){
- cout << min(mx/a, n);
- return 0;
- }
- ll st = log(9*1ll*(mx + a/(b-1)), b);
- if(st > n) st = n;
- while(st){
- if(sum(a, b, st) <= mx) break;
- st--;
- }
- cerr << log(1, 2) << '\n' << log(2, 2) << '\n' << log(3, 2) << '\n' << log(4, 2);
- cout << st;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement