Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
120947 | 黄一航 | 序列变换 | C++ | 通过 | 100 | 361 MS | 8480 KB | 603 | 2024-01-21 14:03:58 |
#include <bits/stdc++.h> #define int long long using namespace std; int n,m; int a[1000005]; int mp[1000005]; signed main() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; while (m--) { int op; cin >> op; if (op == 1) { int x,y; cin >> x >> y; mp[x] += y; } else { int x; cin >> x; int cnt = 0; int xx = (int)(sqrt(x)); for (int i = 1; i <= xx; i++) if (x % i == 0 && i * i != x) cnt += mp[i] + mp[x / i]; else if (x % i == 0) cnt += mp[i]; printf("%lld\n",a[x] + cnt); } } return 0; }