链接:https://ac.nowcoder.com/acm/contest/13504/E
问题描述:给定一个数组,对数组进行多次不同区间问询,查找区间内可以%x的值的个数。
//AC代码:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector<int> v[100005];
int n, q;
int main()
{
cin >> n >> q;
for (int i = 1; i <= n; i++)
{
int y;
cin >> y;
v[y].push_back(i);
}
while (q--)
{
int l, r, x, ans = 0;
cin >> l >> r >> x;
for (int i = x; i <= 1e5; i += x)
{
for (int j = 0; j < v[i].size(); j++)
{
if (v[i][j] >= l && v[i][j] <= r)
ans++;
}
}
cout << ans << endl;
}
return 0;
}
想到了开二维数组,但关注点放在了10^4的问询上,所以进行了提前对各余数打表。
解题核心 for (i = x; i <= 1e5; i += x) 没有想出来。长记性了,以后遇到%运算都会想到这点的。