Cuối tuần trước tôi có được công ty nhờ phỏng vấn một bạn người Ấn Độ cho vị trí Automation QA. Đây là câu hỏi của phần Hands-on coding mà tôi đã hỏi ứng viên. Đó là một bài toán khá quen thuộc "The Snail in the Well" (Con ốc sên ở trong giếng). Đây cũng là một trong những bài tập của khóa Javascript trên trang web SoloLearn.
Trọn vẹn đề bài như sau:
The snail climbs up 7 feet each day and slips back 2 feet each night.
How many days will it take the snail to get out of a well with the given depth?
Sample Input:
31
Sample Output:
6
Explanation: Let's break down the distance the snail covers each day:
Day 1: 7-2=5
Day 2: 5+7-2=10
Day 3: 10+7-2=15
Day 4: 15+7-2=20
Day 5: 20+7-2=25
Day 6: 25+7=32
So, on Day 6 the snail will reach 32 feet and get out of the well at day,
without slipping back that night.
Bài này dịch ra tiếng Việt nôm na là có 1 cái giếng với độ sâu cho trước. Có 1 con ốc sên ở đáy giếng. Ban ngày con ốc leo lên được 7 feet, ban đêm nó bị tuột xuống 2 feet. Hỏi sau bao lâu thì nó chạm được tới miệng giếng? Ví dụ với độ sâu 31 feet thì sau 5 ngày con ốc sên leo lên được 25 feet. Nhưng tới sáng ngày thứ 6 thì nó leo thêm được 25 + 7 = 32 feet tức là đã ra khỏi miệng giếng.
Như mọi khi, lời giải được viết bằng C. Nhưng các bạn có thể viết bằng bất cứ ngôn ngữ nào cũng được.
#include <stdio.h>
int main()
{
int depth = 31;
int days = 0;
int pos = 0;
while (1) {
days++;
pos += 7;
if (pos >= depth) break;
pos -= 2;
}
printf("%d", days);
return 0;
}