Bài tập  /  Bài đang cần trả lời

An ra chợ mua cam. Ở chợ người ta bán cam theo hai cách sau: Mua theo trái thì mỗi trái có giá là X đồng, Mua theo ba trái một thì mỗi lần mua sẽ có giá là Y đồng

Bài 1: Mua cam. An ra chợ mua cam. Ở chợ người ta bán cam theo hai cách sau: Mua theo trái thì mỗi trái có giá là X đồng, Mua theo ba trái một thì mỗi lần mua sẽ có giá là Y đồng. • ● Người mua có thể chọn cách mua bất kỳ, lặp lại các cách mua để mua đủ số cam mình cần. Yêu cầu: An cần mua số cam là N trái, hỏi số tiền ít nhất An cần phải trả là bao nhiêu? Dữ liệu vào từ tệp văn bản BAI1.INP: gồm một dòng ghi ba số nguyên dương X,Y và N (1 s X,Y,N ≤ 100), các số ghi cách nhau dấu cách. Kết quả ghi ra tệp văn bản BAIl.OUT: gồm một dòng ghi một số nguyên dương là số tiền ít nhất An cần trả để mua cam. Vi du: BAI1.INP 3 8 10 552 BAI1.OUT 27 10 Giải thích: Ví dụ 1: Mua “ba trái 8 đồng” ba lần và “một trái 3 đồng” một lần. Ví dụ 2: Mua “một trái 5 đồng” hai lần.
3 Xem trả lời
Hỏi chi tiết
227
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán này, ta có thể sử dụng phép chia lấy phần nguyên và phép chia lấy phần dư để tính số lần mua theo ba trái và số lần mua theo trái.

Gọi k là số lần mua theo ba trái và m là số lần mua theo trái.
- Số cam mua theo ba trái: k * 3
- Số cam mua theo trái: m

Ta có hệ phương trình:
k * 3 + m = N (1)
k * Y + m * X = min(k * Y + m * X) (2)

Giải hệ phương trình trên, ta sẽ tìm được số lần mua theo ba trái và số lần mua theo trái để số tiền trả là ít nhất.

Dưới đây là code Python để giải bài toán này:

```python
def min_cost(X, Y, N):
min_money = float('inf')
for k in range(N // 3 + 1):
m = N - k * 3
money = k * Y + m * X
min_money = min(min_money, money)
return min_money

# Đọc dữ liệu từ file input
with open('BAI1.INP', 'r') as f:
X, Y, N = map(int, f.readline().split())

# Tính số tiền ít nhất An cần trả để mua cam
min_money = min_cost(X, Y, N)

# Ghi kết quả vào file output
with open('BAI1.OUT', 'w') as f:
f.write(str(min_money))
```

Sau khi chạy code trên, kết quả sẽ được ghi vào file BAI1.OUT.
1
2
Kim Mai
02/09/2023 09:23:23
+5đ tặng

#include <iostream>

using namespace std;

int main()
{
    long long X, Y, N;
    cin >> X >> Y >> N;
    if (N < 3)
    {
        cout << X * N;
    }
    else
    {
        if (3 * X < Y)
        {
            cout << X * N;
        }
        else
        {
            long long tmp1 = N / 3;
            long long tmp2 = N - tmp1 * 3;
            cout << Y * tmp1 + X * tmp2;
        }
    }
}

 

Mở khóa để xem toàn bộ nội dung trả lời

(?)
Bạn đã đạt đến giới hạn của mình. Bằng cách Đăng ký tài khoản, bạn có thể xem toàn bộ nội dung trả lời
Cải thiện điểm số của bạn bằng cách đăng ký tài khoản Lazi.
Xem toàn bộ các câu trả lời, chat trực tiếp 1:1 với đội ngũ Gia sư Lazi bằng cách Đăng nhập tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
0
1
NoName
02/09/2023 09:30:00
+4đ tặng
# Đọc dữ liệu từ file input
with open("BAI1.INP", "r") as inp_file:
    X, Y, N = map(int, inp_file.readline().split())

# Khởi tạo biến result để lưu số tiền ít nhất An cần trả
result = 0

# Bắt đầu tính toán
while N > 0:
    if N >= 3:
        # Nếu còn mua được ít nhất 3 trái cam, thì mua theo cách 3 trái Y đồng
        result += 3 * Y
        N -= 3
    else:
        # Nếu không đủ để mua 3 trái, thì mua theo cách 1 trái X đồng
        result += N * X
        N = 0

# Ghi kết quả vào file output
with open("BAI1.OUT", "w") as out_file:
    out_file.write(str(result))
 
Nguyễn Dinh Hung
này là ngôn ngữ lập trình gì v
1
0
Đức Lâm
03/09/2023 18:43:10
+3đ tặng
# Đọc dữ liệu từ file input
with open("BAI1.INP", "r") as inp_file:
    X, Y, N = map(int, inp_file.readline().split())

# Khởi tạo biến result để lưu số tiền ít nhất An cần trả
result = 0

# Bắt đầu tính toán
while N > 0:
    if N >= 3:
        # Nếu còn mua được ít nhất 3 trái cam, thì mua theo cách 3 trái Y đồng
        result += 3 * Y
        N -= 3
    else:
        # Nếu không đủ để mua 3 trái, thì mua theo cách 1 trái X đồng
        result += N * X
        N = 0

# Ghi kết quả vào file output
with open("BAI1.OUT", "w") as out_file:
    out_file.write(str(result))
 

Bạn hỏi - Lazi trả lời

Bạn muốn biết điều gì?

GỬI CÂU HỎI
Học tập không giới hạn cùng học sinh cả nước và AI, sôi động, tích cực, trải nghiệm

Hôm nay bạn thế nào? Hãy nhấp vào một lựa chọn, nếu may mắn bạn sẽ được tặng 50.000 xu từ Lazi

Vui Buồn Bình thường
×
Trợ lý ảo Trợ lý ảo
×
Đấu trường tri thức | Lazi Quiz Challenge +500k
Gửi câu hỏi
×