2023牛客寒假算法基础集训营6-B题
https://ac.nowcoder.com/acm/contest/46814/B
炸鸡块的代码,特殊++
#include <bits/stdc++.h> using namespace std;
int n, q; int a[400010]; int numi[400010], delta[400010]; vector<int> fac[200010]; void add(int x, int pos) { for (auto num : fac[x]) { numi[num]++; } delta[pos] = numi[x]; } int main() { rep(i, 1, 200000) { for (int j = i; j <= 200000; j += i) { fac[j].push_back(i); } } cin >> n >> q; rep(i, 1, n) { scanf("%d", &a[i]); add(a[i], i); } int op, x; rep(i, 1, q) { scanf("%d%d", &op, &x); if (op == 1) { a[++n] = x; add(a[n], n); } else { printf("%d\n", numi[a[x]] - delta[x]); } } return 0; }
|