trang chủ / đề bài / pfprodmod

Tích đoạn modular

Đề bài

Mô tả

Cho dãy số nguyên dương a1,a2,…,an và một số nguyên tố MOD=109+7. Đảm bảo rằng 1≤ai<MOD với mọi i, do đó không có phần tử nào chia hết cho MOD.

Cho q truy vấn. Mỗi truy vấn gồm hai số nguyên l và r (1≤l≤r≤n). Với mỗi truy vấn, hãy tính giá trị

(al·al+1·…·ar)modMOD.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và q.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an cách nhau bởi dấu cách.
  • q dòng tiếp theo, mỗi dòng chứa hai số nguyên l và r mô tả một truy vấn.

Dữ liệu ra

In ra q dòng, mỗi dòng là đáp án của truy vấn tương ứng.

Ràng buộc

  • 1≤n,q≤2·105
  • 1≤ai<109+7
  • 1≤l≤r≤n

Ví dụ

Input Output Giải thích
5 3
1 2 3 4 5
1 5
2 4
3 3
120
24
3
Truy vấn đầu: 1·2·3·4·5=120. Truy vấn hai: 2·3·4=24. Truy vấn ba: chỉ một phần tử a3=3.
4 2
1000000000 1000000000 2 3
1 4
2 3
294
999999993
Tích 109·109·2·3=6·1018. Khi lấy modulo 109+7 ta thu được 294. Với truy vấn hai, 109·2=2·109, và 2·109mod(109+7)=999999993.

Ghi chú

MOD=109+7 là số nguyên tố, do đó với mọi x thỏa 1≤x<MOD, nghịch đảo modular của x tồn tại và có thể tính bằng định lý nhỏ Fermat: x−1≡xMOD−2(modMOD).

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