Phần Tử Lớn Nhất

Đề bài

Mô tả

Cho hàm "tìm phần tử lớn nhất" sau đây, được tham số hoá bởi một hằng số k:

int fast_max(int n, int a[]) {
    int ans = 0;
    int offset = 0;
    for (int i = 0; i < n; ++i)
        if (ans < a[i]) {
            ans = a[i];
            offset = 0;
        } else {
            offset = offset + 1;
            if (offset == k)
                return ans;
        }
    return ans;
}

Hàm này duyệt mảng và duy trì giá trị lớn nhất hiện tại trong ans. Nếu trong k vòng lặp liên tiếp giá trị ans không thay đổi thì hàm dừng sớm và trả về ans.

Cho hai số nguyên nk. Hãy đếm số hoán vị của 1,2,,n mà khi truyền vào hàm trên thì giá trị trả về không bằng n. Vì kết quả có thể rất lớn, hãy in ra phần dư khi chia cho 109+7.

Dữ liệu vào

Một dòng chứa hai số nguyên nk (1n,k106).

Dữ liệu ra

Một số nguyên — số hoán vị thoả mãn, modulo 109+7.

Ràng buộc

  • 1n,k106.

Ví dụ

Input Output Giải thích
5 2 22 Có 22 hoán vị của {1,,5} làm hàm trả về giá trị khác 5.
5 3 6 Sáu hoán vị thoả mãn: [4,1,2,3,5], [4,1,3,2,5], [4,2,1,3,5], [4,2,3,1,5], [4,3,1,2,5], [4,3,2,1,5]. Trong các hoán vị này, hàm dừng sớm trước khi gặp 5 và trả về 4.
6 3 84 Có 84 hoán vị của {1,,6} làm hàm trả về sai.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0