最近这个用的比较多,之前都没写过。
mk一下。
typedef long long ll;
ll tb[maxn];
for (int i = 1; i < maxn; i++) {
for (int j = i; j < maxn; j += i) {
//每次+i保证i是j的因数
tb[j] += i; //记录j的所有因数和
}
}
for (int i = 1; i < maxn; i++) tb[i] += tb[i-1]; //记录1~i的因数和的前缀和
即可实现nlogn的打表,o(1)的查询。
女少口阿