Đề 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…
Bài tập phần While trong C
1 Like
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;
1 Like
Làm theo cách của bác thì tăng 7 đơn vị 1 phát nhanh hơn kk
1 Like
Cách mình đưa ra chỉ là cách ngu học nhất thôi bạn :))
1 Like
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.
1 Like
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
2 Likes
cảm ơn bạn nhé mình làm ra được rồi
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
3 Likes
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.
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?