Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
120949 | 廖悦扬 | 序列变换 | C++ | 通过 | 100 | 116 MS | 8500 KB | 595 | 2024-01-21 14:04:24 |
#include <bits/stdc++.h> #define int long long using namespace std; int mp[1000005], a[1000005], n, m; signed main(){ scanf("%lld%lld", &n, &m); for (int i=1; i<=n; i++) scanf("%lld", &a[i]); while (m--) { int op, x, y; scanf("%lld%lld", &op, &x); if (op == 1) { scanf("%lld", &y); mp[x] += y; } else { int sq = (int)sqrt(x), ans=a[x]; for (int i=1; i<=sq; i++) { if (x%i) continue; int j = x/i; if (i == j) { ans += mp[i]; } else { ans += mp[i] + mp[j]; } } printf("%lld\n", ans); } } return 0; }