题目描述
给定一个长度为 n 的序列 a1,a2,...,an ,及 q 组询问,每组询问包含两个正整数 Li,Ri,请你对于每组询问,求出在给定区间 aLi,...,aRi 之间,有多少个子序列的和为 m 的倍数。(子序列允许为空;由于答案可能过大,输出答案对109+7取模即可)
输入格式
输入第一行,三个正整数 n,m,q
输入第二行,n 个正整数 a1,...,an
接下来 q 行,每行两个正整数,其中第 i+2 行的正整数分别表示第 i 次询问的 Li,Ri
输出格式
输出共 q 行,每行一个整数表示答案。
4 3 3
7 0 8 6
1 2
1 3
2 4
2
4
4
样例解释 1
对于第1个询问,有2个子序列满足要求:{} {0}
对于第2个询问,有4个子序列满足要求:{} {0} {7,8} {7,0,8}
对于第3个询问,有2个子序列满足要求:{} {0} {6} {0,6}
数据范围
- 对于 30% 的数据,1≤n,q≤10 ,1≤m≤5
- 对于 60% 的数据,1≤n,q≤103,1≤m≤10
- 对于 100% 的数据,1≤n,q≤105,1≤Li≤Ri≤n, 0≤ai≤109,1≤m≤20