nyoj Mod

时间:2024-09-18 23:06:14

  

Ocean用巧妙的方法得到了一个序列,该序列有N个元素,我们用数组a来记录(下标从0到N−1)。 
Ocean定义f[i]=(((i%a[0])%a[1])%…)%a[N−1]。 
现在Ocean会给出QQ次查询,每次给定一个区间[L,R],[L,R],他想快速知道∑Ri=Lf[i]∑i=LRf[i] (即f[L]+…+f[R]f[L]+…+f[R])的值。

输入 
第一行输入一个整数T,代表有T组测试数据。 
每组数据占多行,第一行输入一个整数N,代表元素个数。 
下面一行输入N个整数ai。 
下面一行输入一个整数Q,代表Q次查询。 
接下来Q行,每行输入两个整数L,R,代表查询的区间。 
注:1<=T<=20,1<=N,Q<=1000,1<=ai<=100000,1<=L<=R<=100000。 
输出 
对每组测试数据,依次输出QQ行,每行输出对应的查询结果。 
样例输入 


5 4 3 2 1 

1 100000 
2 100000 
3 100000 
4 100000 

5 5 5 5 5 

1 100000 
2 100000 
3 100000 
4 100000 
样例输出 




200000 
199999 
199997 
199994

思路:

用数组记录有序序列。

如果a<=b,则(t%a)%b =t%a; 
如果a>t,则t%a = t;