ARRAYGAME - Trò chơi trên mảng
Dữ liệu vào: standard input
Dữ liệu ra: standard output
Giới hạn thời gian: 3.0 giây
Giới hạn bộ nhớ: 128 megabyte
Đăng bởi: dungde99

Vì dịch bệnh COVID19 đang diễn biến theo hướng xấu, caiwindao và người yêu là anh XYZ quyết định ở nhà tổ chức trò chơi tính nhẩm nhanh với dãy số để luyện tập cho cuộc thi Siêu trí tuệ mùa 2 :v. anh XYZ có một mảng A cho trước gồm N phần tử được đánh số từ 1 tới N. Ban đầu, tất cả các số trong mảng đều bằng 0. Anh XYZ đưa ra M truy vấn trên mảng để caiwindao thực hiện các phép tính nhanh, các truy vấn chỉ thuộc một trong 3 dạng sau đây:

  • 0 x y : caiwindao phải đưa ra kết quả của phép tính tổng tất cả các số trong mảng A từ vị trí x đến vị trí y modulo 109+7.
  • 1 x y : caiwindao phải lần lượt cộng thêm 1*2*3 vào phần thử thứ x, cộng thêm 2*3*4 vào phần tử thứ x+1, ... , cộng thêm (i+1)*(i+2)*(i+3) vào phần tử thứ x+i, ... và tiếp tục cho đến y.
  • 2 x y : caiwindao phải lần lượt trừ đi 1*2*3 từ phần thử thứ x, trừ đi 2*3*4 từ phần tử thứ x+1, ... , trừ đi (i+1)*(i+2)*(i+3) từ phần tử thứ x+i, ... và tiếp tục cho đến y.

Input 

  • dòng đầu : gồm 2 số N và M (1 <= N,M <= 105)
  • dòng hai đến dòng M+1 : gồm 3 số x y z (0 <= x <= 2, 1 <= y <= z <= N), x là loại truy vấn, y và z là hai đầu mút của đoạn con cần thực hiện truy vấn.

Output 

Với mỗi truy vấn loại 0, in ra câu trả lời theo yêu cầu trên từng dòng riêng biệt theo thứ tự xuất hiện của truy vấn trong file Input

Ví dụ

  • input
    8 4
    1 1 8
    0 2 8
    2 4 6
    0 5 6
    output
    1974
    462

Kết quả lần lượt sau mỗi truy vấn như sau :

  • sau truy vấn thứ nhất, giá trị của mảng lúc này là [6,24,60,120,210,336,504,720]

  • câu trả lời cho truy vấn thứ hai là 24+60+120+210+336+504+720=1974

  • sau truy vấn thứ ba, giá trị của mảng lúc này là [6,24,60,114,186,276,504,720]

  • câu trả lời cho truy vấn thứ tư là 186+276=462

Back to Top