Xóa số

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 1800 (p) Thời gian: 0.5s Bộ nhớ: 1G Input: remove.inp Output: remove.out

Hôm nay, để giúp cả lớp ôn lại khái niệm về ước chung và bội chung, thầy giáo dạy toán của G và H đưa ra một thử thách nho nhỏ.

\(V + 1\) số từ \(0\) đến \(V\) được cho vào một dãy \((a_0, a_1, \dots, a_V)\). Thực hiện liên tục các thao tác sau cho đến khi dãy không còn phần tử nào:

  • Loại bỏ lần lượt các phần tử có thứ tự chia hết cho \(H\) (\(a_0, a_H, a_{2H}, a_{3H}, \dots\)).
  • Đánh số lại các phần tử trong dãy.

Yêu cầu: Cho biết \(V\) được loại bỏ ở thao tác thứ bao nhiêu.

Input

  • Dữ liệu đọc từ tệp văn bản REMOVE.inp:
    • Một dòng duy nhất gồm hai số nguyên dương \(V, H\) (\(1 \leq H \leq V \leq 10^{12}\)).

Output

  • Ghi ra tệp văn bản REMOVE.out:
    • Một dòng duy nhất là thời điểm bị loại của \(V\). Hiển nhiên rằng sau một số hữu hạn thao tác \(V\) chắc chắn sẽ được loại bỏ.

Example

Test 1

Input
5 3
Output
2
Note

Ở thao tác đầu tiên, các phần tử \(0, 3\) bị loại: \((0, 1, 2, 3, 4, 5) \rightarrow (1, 2, 4, 5)\).

Test 2

Input
6 2
Output
1
Note

Ở thao tác đầu tiên, các phần tử \(0, 2, 4, 6\) bị loại khỏi dãy \((0, 1, 2, 3, 4, 5, 6)\).

Test 3

Input
6 4
Output
2
Note

Ở thao tác đầu tiên, các phần tử \(0, 4\) bị loại: \((0, 1, 2, 3, 4, 5, 6) \rightarrow (1, 2, 3, 5, 6)\).

Scoring

  • \(12\%\) số điểm có \(V \leq 1000\).
  • \(12\%\) số điểm khác có \(V \leq 10^5\).
  • \(24\%\) số điểm khác có \(V \leq 10^6\).
  • \(24\%\) số điểm khác có \(H = 2\).
  • \(28\%\) số điểm còn lại không có giới hạn gì thêm.

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.