trang chủ / đề bài / numdec / lời giải

Số Cách Phân Tích Thừa Số

Chỉ dùng lời giải này khi không có ý tưởng, và đừng copy-paste code từ lời giải này. Hãy tôn trọng người ra đề và người viết lời giải.
Nộp một lời giải chính thức trước khi tự giải là một hành động có thể bị ban.
Tác giả: huunguyenhuunguyen

Lời giải: Số Cách Phân Tích Thừa Số

Hướng tiếp cận

Dùng phân tích thừa số nguyên tố kết hợp công thức tổ hợp (stars and bars).

Nhận xét quan trọng

  1. Phân tích m=p1e1×p2e2×⋯×pkek.
  2. Vì các thừa số nguyên tố độc lập nhau, số cách phân tích m thành tích của n số bằng tích của số cách phân phối từng lũy thừa.
  3. Số cách phân phối ei đơn vị của pi vào n vị trí (mỗi vị trí nhận ≥0) = (ei+n−1n−1) (công thức stars and bars).

Thuật toán

  1. Phân tích từng aj ra thừa số nguyên tố, cộng dồn số mũ vào cnt[p].
  2. Với mỗi số nguyên tố p có tổng số mũ e, nhân kết quả với (e+n−1n−1)(mod109+7).
  3. Tính (e+n−1n−1) qua giai thừa và nghịch đảo modulo.

Độ phức tạp

  • Thời gian: O(nmaxa) để phân tích thừa số, O(MAXF) để tiền xử lý giai thừa
  • Bộ nhớ: O(MAXF)

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.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0