01/10/2018, 09:28

Bài tập phần While trong C

Đề bài : Đếm tiền vàng.
Thần giữ của có một bao tải tiền vàng. Ngày nào, ông ta cũng lôi ra đếm để xem có thiếu đồng nào hay không. Cách đếm tiền của ông ta cũng khác người: ông ta lần lượt đếm 2 đồng tiền vàng một lần, rồi 3 đồng tiền vàng một lần, rồi 4 đồng tiền vàng một lần, rồi 5 đồng tiền vàng một lần, rồi 6 đồng tiền vàng một lần. Mỗi lần đếm đều thừa 1 đồng tiền vàng. Cuối cùng ông ta đếm 7 đồng tiền vàng một lần, và lần này thì vừa hết.
Bạn hãy cho biết, ông ta có ít nhất bao nhiêu đồng tiền vàng?
Các bạn gợi ý hướng giải giúp mình với mình đang học môn Kỹ Thuật Lập Trình ở trường, mà suy nghĩ chiều giờ chưa ra nữa…

Trần Hoàn viết 11:35 ngày 01/10/2018

Bạn lấy một biến SoTienVang = 0 nhé

while (SoTienVang % 7 != 0 || SoTienVang % 6 != 1 || SoTienVang % 5 != 1 || SoTienVang % 4 != 1 || SoTienVang % 3 != 1 || SoTienVang % 2 != 1)
    SoTienVang += 1;
Hidan viết 11:39 ngày 01/10/2018

Làm theo cách của bác thì tăng 7 đơn vị 1 phát nhanh hơn kk

Trần Hoàn viết 11:39 ngày 01/10/2018

Cách mình đưa ra chỉ là cách ngu học nhất thôi bạn :))

rogp10 viết 11:34 ngày 01/10/2018

Chính xác mấy bài lấy điều kiện ntn thì điều đầu tiên cần làm là tìm những điều kiện dễ nhất và chỉ duyệt những số thỏa mãn những điều kiện này.

Trần Hoàn viết 11:31 ngày 01/10/2018

Vậy thì nhanh nhất chắc thế này?

int SoTienVang = 0;
while (SoTienVang % 6 != 1)
    SoTienVang += 7;
while (SoTienVang % 5 != 1)
    SoTienVang += 7 * 6;
while (SoTienVang % 4 != 1)
    SoTienVang += 7 * 6 * 5;
//Nếu chia 6 dư 1 thì chia 2 hay chia 3 cũng dư 1
Dinh viết 11:38 ngày 01/10/2018

cảm ơn bạn nhé mình làm ra được rồi

Lone viết 11:32 ngày 01/10/2018
int coin = 1;
while (coin%7 != 0) coin += 3*4*5;
// coin-1 chia hết 2,3,4,5,6 
// => coin-1 chia hết 3*4*5 (ước nguyên tố của 2,3,4,5,6)
cout << coin << endl;

Mình có cách này bạn xem có nhanh hơn không

Trần Hoàn viết 11:40 ngày 01/10/2018

int coin = 1;
while (coin%7 != 0) coin += 345;

Mình chịu, test thứ thấy đều không đến 1ms :))
Nhưng có lẽ cách này nhanh hơn thật, ít bước tính toán hơn.

Bài liên quan
0