CSES - Christmas Party | Bữa tiệc Giáng Sinh

Xem PDF



Tác giả:
Dạng bài
Điểm: 1600 (p) Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Có \(n\) đứa trẻ trong một bữa tiệc Giáng Sinh, và mỗi đứa trẻ đã mang theo một món quà. Ý tưởng đó là mọi người sẽ nhận được một món quà do ai đó khác mang đến.

Các món quà có thể được phân phối bằng nhiêu cách?

Input

  • Dòng đầu vào duy nhất có một số nguyên \(n\): số lượng đứa trẻ.

Output

  • In số lượng cách chia lấy dư cho \(10 ^ 9 + 7\).

Constraints

  • \(1 \leq n \leq 10 ^ 6\)

Example

Sample input

4

Sample output

9


Bình luận

  • danh3003 10:51 p.m. 25 Tháng 12, 2024
    Cách giải

    Ta thấy có \(n\) đứa trẻ và \(n\) phần quà -> ta cần đếm số cách để sắp xếp \(n\) phần quà cho \(4n\) đứa trẻ
    Để dễ hình dung hơn ta có các đứa trẻ được đánh số thứ tự từ \(1\) -> \(n\)

    • Đứa trẻ \(1\) sẽ có \(n\) cách lấy quà
    • Đứa trẻ \(2\) sẽ có \(n - 1\) cách lấy quà (bạn đầu tiên đã lấy mất 1 phần quà)
    • Đứa trẻ \(3\) sẽ có \(n - 2\) cách lấy quà (2 bạn đầu tiên đã lấy mất 2 phần quà)
    • ...
    • Đứa trẻ \(n\) sẽ có 1 cách lấy quà (còn 1 phần quà cuối cùng)
      \(=>\) Đáp án sẽ \(n!\)
    Code (Vì hôm nay là Giáng sinh nên sẽ có code)
    Python
    def MerryChristmas():
        print(25, "/", 12, "/", 2024)
        print("Chúc mọi người Giáng sinh vui vẻ!")
        print("Merry Christmas!")
    Mod = 10 ** 9 + 7
    n = int(input())
    a = 1
    for i in range(1, n + 1):
        a *= i
        a %= Mod
    print(a)
    MerryChristmas()
    
    • scratch_huykhanh 10:59 a.m. 20 Tháng 8, 2024
      Hint (đơn giản hóa vấn đề)

      Đếm số lượng hoán vị từ của dãy {1;2;3...;N-1;N} sao cho ko sao cho không có phần tử nào trong hoán vị đó ở đúng vị trí ban đầu của nó.