不是VIP会员,不能显示答案

题目解答

题目:
问题描述:给定一个序列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.
考点:
分析:
解答:
评论:
老师: