Loading Now

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 != 1M != 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 đến 8, trong đó các lối đi tử thần là 3, 5, 6 do đó còn lại 5 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ại 15-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

    Contact