1. 程式人生 > >bzoj3038 上帝造題的七分鐘2

bzoj3038 上帝造題的七分鐘2

類型 amp sam -o 符號 zoj put 就會 code

Description

XLk覺得《上帝造題的七分鐘》不太過癮,於是有了第二部。

"第一分鐘,X說,要有數列,於是便給定了一個正整數數列。

第二分鐘,L說,要能修改,於是便有了對一段數中每個數都開平方(下取整)的操作。

第三分鐘,k說,要能查詢,於是便有了求一段數的和的操作。

第四分鐘,彩虹喵說,要是noip難度,於是便有了數據範圍。

第五分鐘,詩人說,要有韻律,於是便有了時間限制和內存限制。

第六分鐘,和雪說,要省點事,於是便有了保證運算過程中及最終結果均不超過 \(64\) 位有符號整數類型的表示範圍的限制。

第七分鐘,這道題終於造完了,然而,造題的神牛們再也不想寫這道題的程序了。"

——《上帝造題的七分鐘·第二部》

所以這個神聖的任務就交給你了。

Input

第一行一個整數 \(n\) ,代表數列中數的個數。

第二行 \(n\) 個正整數,表示初始狀態下數列中的數。

第三行一個整數 \(m\) ,表示有 \(m\) 次操作。

接下來 \(m\) 行每行三個整數 \(k,l,r\)\(k=0\) 表示給 \([l,r]\) 中的每個數開平方(下取整), \(k=1\) 表示詢問 \([l,r]\) 中各個數的和。

Output

對於詢問操作,每行輸出一個回答。

Sample Input

10
1 2 3 4 5 6 7 8 9 10
5
0 1 10
1 1 10
1 1 5
0 5
8 1 4 8

Sample Output

19
7
6

HINT

  1. 對於 \(100\%\) 的數據, \(1le n\le 100000,1\le l\le r\le n\),數列中的數大於 \(0\) ,且不超過 \(1e12\)
  2. 數據不保證 \(L<=R\)\(L>R\),請自行交換 \(L,R\) ,謝謝!

Solution

口胡一下吧。因為開方不了幾次一個數就會變成 \(1\) 了。有點像區間取模。

bzoj3038 上帝造題的七分鐘2