Đếm hoán vị

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: 1.0s Bộ nhớ: 256M Input: bàn phím Output: màn hình

Cho hai số nguyên dương \(n, k\). Đếm xem có bao nhiêu hoán vị \(p_{1}, p_{2}, \ldots, p_{n}\) của \(1, 2, \ldots, n\) thỏa mãn \(p_{i} > p_{i / k}\) với mọi \(1 \leq i \leq n\).

Trong đó, \(a / b\) là số nguyên lớn nhất không vượt quá \(\dfrac{a}{b}\) và quy ước \(p_{0} = 0\).

Input

  • Gồm hai số nguyên dương \(n, k\) \((1 \leq n, k \leq 10^{6})\).

Output

  • In ra số lượng hoán vị thỏa mãn điều kiện sau khi \(\mod (10^{9} + 7)\).

Scoring

  • Subtask \(1\) (\(20\%\) số điểm): \(n \leq 10\).
  • Subtask \(2\) (\(10\%\) số điểm): \(k > n\).
  • Subtask \(3\) (\(10\%\) số điểm): \(k = n\).
  • Subtask \(4\) (\(20\%\) số điểm): \(k > \dfrac{n}{2}\).
  • Subtask \(5\) (\(20\%\) số điểm): \(n, k \leq 10^{3}\).
  • Subtask \(6\) (\(20\%\) số điểm): \(n, k \leq 10^{6}\).

Example

Test 1

Input
3 2 
Output
2
Note

Trong test 1, chúng ta cần tìm các hoán vị thỏa mãn \(p_{3} > p_{1}\)\(p_{2} > p_{1}\). Có 2 hoán vị như vậy \((1, 2, 3)\)\((1, 3, 2)\).

Test 2

Input
8 3 
Output
2520

Bình luận (1)

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

Kỳ thi: