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

Lập trình - Lớp 7
31/01 22:38:50

An đang chơi trong công viên nhìn thấy hai con thỏ đang nhảy về phía nhau

An đang chơi trong công viên nhìn thấy hai con thỏ đang nhảy về phía nhau, trong đó có một con thỏ trắng và một con thỏ xám. Vị trí của hai con thỏ có thể được biểu diễn dưới dạng tọa độ nguyên trên một trục số. Con thỏ trắng hiện đang ở vị trí x và con thỏ xám hiện đang ở vị trí y (x<y). Cứ sau mỗi giây, mỗi con thỏ lại nhảy đến một vị trí khác. Con thỏ trắng nhảy theo hướng dương và độ dài mỗi bước nhảy bằng a, tức là nếu vị trí hiện tại là x_0 thì sau khi nhảy nó sẽ đến vị trí x_0+a. Con thỏ xám nhảy theo hướng âm và độ dài mỗi bước nhảy bằng b, tức là nếu vị trí hiện tại là y_0 thì sau khi nhảy nó sẽ đến vị trí y_0-b. Ví dụ, giả sử x=0,y=10,a=3 và b=2. Sau giây thứ nhất, mỗi con thỏ sẽ ở vị trí 3 và 8. Sau giây thứ hai, cả hai con thỏ sẽ ở cùng vị trí 6. Bây giờ An tự hỏi: Liệu hai con thỏ có ở cùng một vị trí vào cùng một thời điểm không? Nếu có thì sẽ mất bao lâu? Bạn hãy giúp An nhé. Dữ liệu: Vào từ tệp văn bản rab.inp gồm một dòng chứa 4 số nguyên x,y,a và b (0x<y10^15;1a,b10^15 ) tương ứng là vị trí hiện tại của con thỏ trắng, vị trí hiện tại của con thỏ xám, độ dài mỗi bước nhảy của con thỏ trắng và độ dài mỗi bước nhảy của con thỏ xám. Kết quả: Ghi ra tệp văn bản rab.out. Nếu hai con thỏ không bao giờ đồng thời ở cùng một vị trí thì ghi ra -1. Ngược lại ghi ra một số nguyên duy nhất là số giây mà hai con thỏ sẽ cần để đồng thời ở cùng một vị trí. Ví dụ: rab.inp rab.out 0 10 3 2 2 0 10 3 3 -1 Ví dụ đầu tiên đã được giải thích ở trên. Ví dụ thứ hai: Sau giây thứ nhất, con thỏ trắng ở vị trí 3 và con thỏ xám ở vị trí 7; Sau giây thứ hai, con thỏ trắng ở vị trí 6 và con thỏ xám ở vị trí 4; Từ giây thứ ba trở đi các con thỏ sẽ không bao giờ ở cùng một vị trí, vì khoảng cách giữa hai con thỏ sau đó sẽ chỉ tăng. Ràng buộc: Có 60% số test ứng với 60% số điểm của bài thỏa mãn: 0x<y10^7 và 1a,b10^7; 20% số test khác ứng với 20% số điểm của bài thỏa mãn: a=b; 20% số test còn lại ứng với 20% số điểm của bài không có ràng buộc gì thêm.
2 trả lời
Hỏi chi tiết
284
Tham khảo câu trả lời từ Trợ lý ảo Lazi
Để giải bài toán này, ta sẽ sử dụng phép toán và so sánh để tìm ra kết quả.

Đầu tiên, ta sẽ tính được số bước nhảy mà con thỏ trắng cần để đến vị trí của con thỏ xám. Số bước này chính là hiệu của vị trí của con thỏ xám và con thỏ trắng chia cho tổng độ dài mỗi bước nhảy của cả hai con thỏ.

Nếu số bước nhảy này là một số nguyên dương, tức là con thỏ trắng có thể đến vị trí của con thỏ xám sau một số giây, ta sẽ kiểm tra xem sau bao nhiêu giây thì cả hai con thỏ sẽ đồng thời ở cùng một vị trí. Để làm điều này, ta sẽ kiểm tra xem sau bao nhiêu bước nhảy, vị trí của cả hai con thỏ có bằng nhau hay không. Nếu có, ta sẽ ghi ra số giây tương ứng. Nếu không, ta sẽ ghi ra -1.

Nếu số bước nhảy không phải là một số nguyên dương, tức là con thỏ trắng không thể đến vị trí của con thỏ xám sau một số giây, ta sẽ ghi ra -1.

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

```python
def find_time(x, y, a, b):
# Tính số bước nhảy mà con thỏ trắng cần để đến vị trí của con thỏ xám
steps = (y - x) / (a + b)

# Kiểm tra xem số bước nhảy có phải là một số nguyên dương hay không
if steps.is_integer() and steps > 0:
# Kiểm tra xem sau bao nhiêu bước nhảy, vị trí của cả hai con thỏ có bằng nhau hay không
time = int(steps)
if x + a * time == y - b * time:
return time
else:
return -1
else:
return -1

# Đọc dữ liệu từ file input
with open('rab.inp', 'r') as file:
x, y, a, b = map(int, file.readline().split())

# Tìm kết quả
result = find_time(x, y, a, b)

# Ghi kết quả vào file output
with open('rab.out', 'w') as file:
file.write(str(result))
```

Độ phức tạp của thuật toán này là O(1) vì ta chỉ thực hiện một số phép toán và so sánh đơn giản.
1
0
Oga Binh
01/02 01:04:02
+5đ tặng
Mô tả đầu vào
Gồm một dòng chứa 4 số nguyên
x,y,avaˋb(0≤xb(0≤xRàng buộc
60% số test ứng với 60% số điểm của bài thỏa mãn:
0≤x20% số test khác ứng với 20% số điểm của bài toán thỏa mãn
a=b
a=b
20% số test còn lại ứng với 20% điểm của bài không có ràng buộc gì thêm
Mô tả đầu ra
Nếu 2 con thỏ không bao giờ đồng thời ở cùng một vị trí thì ghi ra là
−1
−1. Ngược lại ghi ra một só nguyên duy nhất là số giây mà hai con thỏ sẽ cần để đồng thời ở cùng một vị trí.
Test case mẫu
Đầu vào mẫu 1
0 10 3 2
Đầu ra mẫu 1
2
Đầu vào mẫu 2
0 10 3 3
Đầu ra mẫu 2
-1

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 ký tài khoản ngay bây giờ
Tôi đã có tài khoản? Đăng nhập
1
0
GUNTER OBERDORF ...
01/02 15:12:26
+4đ tặng
def time_to_meet(x, y, a, b):
    distance = y - x
    total_jump = a + b

    if distance % total_jump != 0:
        return -1
    else:
        return distance // total_jump
CHẤM ĐIỂM GIÚP

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 bạn bè học sinh cả nước, đến LAZI, sôi động, tích cực, trải nghiệm
Câu hỏi Lập trình mới nhất

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

Học ngoại ngữ với Flashcard

×
Gia sư Lazi Gia sư
×
Trợ lý ảo Trợ lý ảo