问题描述:给定一个序列a1,a2, ...,an和一个数p,对于每一个询问(l,r),输出(al+al+1+...+ar) mod p,1<=n<=10^6,1<=ai<=10^100,1<=p<=10^8,l<=r。
输入格式:
第一行:n和p
接下来n行:每行一个数,分别表示a1,a2, ...,an
接下来一行:m
接下来m行:每行两个数,分别为每次查询的l和r
输出格式:输出共有m行,每个查询输出一个结果。
输入样例:
3 4
23
12
13
1
1 3
输出样例:
0
程序清单:
var
i,ans,p,n,m,j,l,r:longint;
a,pre:array[0..100000] of longint;
s:string;
begin
readln(n,p);
for i:=1 to n do
begin
readln(s);
a[i]:=0;
for j:=1 to ____length(s)___ do
a[i]:=(a[i]*10+ ____ord(s[j])-ord('0')___ ) mod p;
end;
pre[0]:=0;
for i:=1 to n do pre[i]:= ____(pre[i-1]+a[i])mod p___ ;
readln(m);
for i:=1 to m do
begin
____readln(l,r)___ ;
ans:= ____pre[r]-pre[l-1]___ ;
if (ans<0) then ____ans:=ans+p___ ;
writeln(ans);
end;
end.