
deathPaths
Năm nay cậu Ba về quê chơi, được cả làng dẫn đi thám hiểm ngôi nhà hoang ở phía sau dốc núi cạnh làng. Theo truyền thuyết kể lại, trong ngôi nhà hoang có tất cả N
lối đi, mỗi lối đi được đánh số từ 1
đến N
và đều có những nguy hiểm phía trước. Tuy nhiên điều bí ẩn của ngôi nhà hoang này là độ nguy hiểm của mỗi lối đi thay đổi theo từng ngày. Vào ngày D
, tháng M
thì các lối đi có chỉ số chia hết cho D
hoặc chia hết cho M
sẽ dẫn đến cái chết, còn những lối đi khác đều sống sót sau cuộc thám hiểm.
Biết được điều đó, anh Ba và những người bạn đã không lựa chọn vào ngày 1
hay tháng 1
của năm để thám hiểm vì sẽ chết dù có đi theo lối đi nào. Mọi người đã chọn đi thám hiểm vào ngày D
và tháng M
, với D != 1
và M != 1
. Họ muốn biết là có bao nhiêu lối đi an toàn cho họ khi thực hiện thám hiểm.
Ví dụ:
- Với
N = 8, D = 3, M = 5
thìdeathPaths(N,D,M)=5
Sẽ có8
lối đi từ1
đến8
, trong đó các lối đi tử thần là3, 5, 6
do đó còn lại5
lối đi an toàn - Với
N = 15, D = 4, M = 6
thìdeathPaths(N,D,M)=11
Các lối đi tử thần là4, 6, 8, 12
do đó còn lại15-4=11
lối đi an toàn
Đầu ra:
- [Thời gian chạy] 0.1 giây với C++, 1.2 giây với Java và C#, 1.6 giây vs Python và Js
- [Đầu vào] long N
số lối đi trong căn nhà1 <= N <= 10^14
- [Đầu vào] integer D, M
2 <= D <= 28
2 <= M <= 12
- [Đầu ra] long
Số lượng lối đi an toàn.
Post Comment