时间限制: 1 Sec 内存限制: 256 MB
题目描述
A找B做游戏,B提议做一个奇怪的游戏,输的人需要请对方吃一顿饭,规则如下:给定一个数字N,以及N个数字Ai;现在有Q个询问,每次询问用两个数字L,R来表示,表示要求AL,AL+1,……AR-1,AR之中,能够被X整除的有多少个? 但是A的智商太低,并且口袋里面没有钱。让你写个程序帮助他。
输入
第1行2个数字,表示N和X。 第2行N个数字,表示A1,A2……AN。 第3行1个数字,表示Q。 第4到Q+4-1行,每行有2个数字,分别表示每次询问中的L和R。
输出
输出一共有Q行。 每一行表示对于AL,AL+1,……AR-1,AR之中,能够被X整除的个数。
样例输入
5 3
5 9 1 6 3
4
1 3
2 5
3 3
1 5
样例输出
1
3
0
3
参考答案
#include <bits/stdc++.h>
using namespace std;
long long a[99999],s[99999],q,x,l,r,c=0,n;
int main() {
cin>>n>>x;
for(int i=1; i<=n; i++) {
cin>>a[i];
if(a[i]%x==0) {
s[i]=s[i-1]+1;
} else {
s[i]=s[i-1]+0;
}
}
cin>>q;
for(int i=1; i<=q; i++) {
cin>>l>>r;
cout<<s[r]-s[l-1]<<endl;
}
return 0;
}