区间取余
链接: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) 没有想出来。长记性了,以后遇到%运算都会想到这点的。