手机网站建设案例,网站建设教程pdf百度云,做视频网站用什么好,网站制作方案在哪找1220 约数之和
推式子 ∑i1n∑j1nd(i,j)∑i1n∑j1n∑x∣i∑y∣j(gcd(x,y)1)xjy∑d1ndμ(d)∑i1nd∑x∣iix∑j1nd∑y∣jj∑d1ndμ(d)(∑i1nd∑x∣ix)2∑d1ndμ(d)(∑x1nx∑x∣i)2∑d1ndμ(d)(∑x1nxnx)2接下来就是杜教筛求dμ(d)的前缀和#xff0c;然后再直接分块求∑x1nxnx1n∑j1nd(i,j)∑i1n∑j1n∑x∣i∑y∣j(gcd(x,y)1)xjy∑d1ndμ(d)∑i1nd∑x∣iix∑j1nd∑y∣jj∑d1ndμ(d)(∑i1nd∑x∣ix)2∑d1ndμ(d)(∑x1nx∑x∣i)2∑d1ndμ(d)(∑x1nxnx)2接下来就是杜教筛求dμ(d)的前缀和然后再直接分块求∑x1nxnx就可以搞定了。\sum_{i 1} ^{n} \sum_{j 1} ^{n} d(i,j)\\ \sum_{i 1} ^{n} \sum_{j 1} ^{n} \sum_{x \mid i} \sum_{y \mid j} (gcd(x, y) 1) \frac{xj}{y}\\ \sum_{d 1} ^{n} d \mu(d) \sum_{i 1} ^{\frac{n}{d}} \sum_{x \mid i} \frac{i}{x} \sum_{j 1} ^{\frac{n}{d}} \sum_{y \mid j} j\\ \sum_{d 1} ^{n} d \mu(d) \left(\sum_{i 1} ^{\frac{n}{d}} \sum_{x \mid i} x \right) ^ 2\\ \sum_{d 1} ^{n} d \mu(d) \left(\sum_{x 1} ^{n} x \sum_{x \mid i} \right) ^ 2\\ \sum_{d 1} ^{n} d \mu(d) \left(\sum_{x 1} ^{n} x \frac{n}{x} \right) ^ 2\\ 接下来就是杜教筛求d \mu(d)的前缀和然后再直接分块求\sum_{x 1} ^{n} x \frac{n}{x}就可以搞定了。 i1∑nj1∑nd(i,j)i1∑nj1∑nx∣i∑y∣j∑(gcd(x,y)1)yxjd1∑ndμ(d)i1∑dnx∣i∑xij1∑dny∣j∑jd1∑ndμ(d)⎝⎛i1∑dnx∣i∑x⎠⎞2d1∑ndμ(d)⎝⎛x1∑nxx∣i∑⎠⎞2d1∑ndμ(d)(x1∑nxxn)2接下来就是杜教筛求dμ(d)的前缀和然后再直接分块求x1∑nxxn就可以搞定了。
代码
/*Author : lifehappy
*/
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#include bits/stdc.h#define mp make_pair
#define pb push_back
#define endl \n
#define mid (l r 1)
#define lson rt 1, l, mid
#define rson rt 1 | 1, mid 1, r
#define ls rt 1
#define rs rt 1 | 1using namespace std;typedef long long ll;
typedef unsigned long long ull;
typedef pairint, int pii;const double pi acos(-1.0);
const double eps 1e-7;
const int inf 0x3f3f3f3f;inline ll read() {ll f 1, x 0;char c getchar();while(c 0 || c 9) {if(c -) f -1;c getchar();}while(c 0 c 9) {x (x 1) (x 3) (c ^ 48);c getchar();}return f * x;
}const int N 1e6 10, mod 1e9 7;int prime[N], cnt;bool st[N];ll mu[N];void init() {mu[1] 1;for(int i 2; i N; i) {if(!st[i]) {prime[cnt] i;mu[i] -1;}for(int j 0; j cnt i * prime[j] N; j) {st[i * prime[j]] 1;if(i % prime[j] 0) break;mu[i * prime[j]] -mu[i];}}for(int i 1; i N; i) {mu[i] (1ll * i * mu[i] mu[i - 1]) % mod;}
}ll calc2(ll l, ll r) {return (l r) * (r - l 1) / 2 % mod;
}ll calc1(ll n) {ll ans 0;for(ll l 1, r; l n; l r 1) {r n / (n / l);ans (ans calc2(l, r) * (n / l) % mod) % mod;}return ans;
}unordered_mapll, ll ans_s;ll S(ll n) {if(n N) return mu[n];if(ans_s.count(n)) return ans_s[n];ll ans 1;for(ll l 2, r; l n; l r 1) {r n / (n / l);ans (ans - calc2(l, r) * S(n / l) % mod mod) % mod;}return ans_s[n] (ans mod) % mod;
}int main() {// freopen(in.txt, r, stdin);// freopen(out.txt, w, stdout);// ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);ll n read(), ans 0;init();for(ll l 1, r; l n; l r 1) {r n / (n / l);ll res1 calc1(n / l), res2 (S(r) - S(l - 1) mod) % mod;ans (ans res1 * res1 % mod * res2 % mod) % mod;}printf(%lld\n, ans);return 0;
}