Em chào mọi người. Em đang có bài code này nghĩ mãi không ra cách giải hợp lý. Code đầu của em đúng nhưng TLE, code sau sai trong vài trường hợp.
Đầu bài (tóm tắt):
Một người có n VND. Anh ta muốn mua sữa. Có hai loại được bán ra: Một hộp giấy 1 lít giá a VND; Hoặc một chai thủy tinh 1 lít giá b VND, nhưng có thể đem đổi chai và nhận được c VND. Tìm số lít sữa lớn nhất mà anh ta có thể mua được.
Inp: 4 số nguyên n,a,b,c (1 ≤ 𝑛, 𝑎 ≤ 10^18, 1 ≤ 𝑐 <𝑏 ≤ 10^18)
Outp: 1 số nguyên duy nhất là số lít sữa tối đa mà người đó có thể mua.
VD:
10 11 9 8 -> 2
10 5 6 1 -> 2
Code thứ 2 của em:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int main() {
ll n, a, b, c;
cin >> n >> a >> b >> c;
ll l=0, x=b-c;
if (a<=x) l=n/a;
else {
l=(n-b)/x;
n-=x*l;
if (n>=b||n>=a){
if (b<a)++l;
else l+=n/a;
}
}
cout << l;
}
Mong mọi người giúp em chỉ ra vài trường hợp sai đối với code trên (nếu sửa được thì sửa luôn cũng được ạ ^-^). Em cảm ơn.