trang chủ / bài tập / sashaarr

Sasha và Mảng

Đề bài

Mô tả

Cho một mảng số nguyên a1,a2,,an. Bạn cần thực hiện m truy vấn thuộc hai loại:

  • Loại 1: 1 l r x — tăng tất cả các phần tử trên đoạn từ l đến r lên x đơn vị.
  • Loại 2: 2 l r — tính tổng i=lrf(ai), trong đó f(k) là số Fibonacci thứ k. Vì kết quả có thể rất lớn, hãy in ra phần dư của nó khi chia cho 109+7.

Dãy Fibonacci được định nghĩa như sau: f(1)=1, f(2)=1, và f(k)=f(k1)+f(k2) với mọi k>2.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên nm — số phần tử của mảng và số truy vấn.
  • Dòng thứ hai chứa n số nguyên a1,a2,,an.
  • m dòng tiếp theo, mỗi dòng mô tả một truy vấn theo định dạng nêu trên.

Dữ liệu bảo đảm có ít nhất một truy vấn loại 2.

Dữ liệu ra

Với mỗi truy vấn loại 2, in ra một dòng chứa kết quả tương ứng theo modulo 109+7.

Ràng buộc

  • 1n105
  • 1m105
  • 1ai109
  • 1lrn
  • 1x109

Ví dụ

Input Output Giải thích
5 4
1 1 2 1 1
2 1 5
1 2 4 2
2 2 4
2 1 5
5
7
9
Ban đầu a=[1,1,2,1,1]. Truy vấn đầu: f(1)+f(1)+f(2)+f(1)+f(1)=1+1+1+1+1=5. Sau truy vấn cập nhật, a=[1,3,4,3,1]. Truy vấn thứ hai: f(3)+f(4)+f(3)=2+3+2=7. Truy vấn thứ ba: f(1)+f(3)+f(4)+f(3)+f(1)=1+2+3+2+1=9.
9 4
2 1 2 3 3 3 2 1 3
2 1 8
1 7 7 3
1 1 3 1
1 3 5 2
11 Truy vấn loại 2 trên đoạn [1,8]: f(2)+f(1)+f(2)+f(3)+f(3)+f(3)+f(2)+f(1)=1+1+1+2+2+2+1+1=11. Ba truy vấn còn lại là cập nhật nên không in gì.
1 2
1000000000
1 1 1 1000000000
2 1 1
999999020 Sau khi cộng, phần tử duy nhất bằng 2·109. Kết quả là f(2·109)mod(109+7)=999999020.

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