LL all, del, last, ans; all = del = 0; for (int i = 1; i <= b; i = last + 1) { last = min(b / (b / i), d / (d / i)); all += (sum[last] - sum[i - 1]) * (b / i) * (d / i); } for (int i = 1; i <= b; i = last + 1) { last = b / (b / i); del += (sum[last] - sum[i - 1]) * (b / i) * (b / i); } ans = all - (del / 2);
int t, a, b, c, d, k, pr[MAXN], cnt, ans; int mu[MAXN], sum[MAXN]; bool vis[MAXN];
voidread(int& x){ x = 0; int f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -f; c = getchar(); } while (c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c ^ 48); c = getchar(); } x *= f; }
voidEuler(){
mu[1] = 1; for (int i = 2; i <= 5e4; i++) { if (!vis[i]) { pr[++cnt] = i, mu[i] = -1; } for (int j = 1; j <= cnt && pr[j] * i <= 5e4; j++) { vis[pr[j] * i] = 1; if (i % pr[j] == 0) { mu[i * pr[j]] = 0; break; } mu[i * pr[j]] = -mu[i]; } }
for (int i = 1; i < MAXN; i++) sum[i] = sum[i - 1] + mu[i];
}
intquery(int n, int m){ if (n > m) swap(n, m); int res = 0; for (int i = 1, last = 1; i <= n; i = last + 1) { last = min(n / (n / i), m / (m / i)); res += (sum[last] - sum[i - 1]) * (n / (i * k)) * (m / (i * k)); } return res; }
intmain(){
read(t); Euler ();
while (t--) { read(a), read(b), read(c), read(d), read(k); ans = query (b, d) - query (a - 1, d) - query (c - 1, b) + query (a - 1, c - 1); printf ("%d\n", ans); }
while (t--) { scanf ("%lld %lld", &n, &m); if (n > m) swap (n, m); ans = 0; for (int l = 1, r = 1; l <= n; l = r + 1) { r = min (n / (n / l), m / (m / l)); ans = ans + (h[r] - h[l - 1]) * (n / l) * (m / l); } printf ("%lld\n", ans); } return0; }
#include<cstdio> #include<iostream> #include<algorithm> #define LL long long #define int long long usingnamespace std; constint MAXN = 5e6 + 5; constint Mod = 1e9 + 7;
int t, k, n, m, cnt, mu[MAXN], pr[MAXN]; bool vis[MAXN]; LL f[MAXN], ans;
LL qpow(LL x, int y){ LL res = 1; while (y) { if (y & 1) res = res * x % Mod; x = x * x % Mod; y >>= 1; } return res; }
#include<cstdio> #include<iostream> #include<algorithm> #define int long long usingnamespace std; constint MAXN = 1e7 + 5; constint Mod = 100000009;
voidread(int& x){ x = 0; int f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -f; c = getchar(); } while (c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c ^ 48); c = getchar(); } x *= f; }
int t, n, m, ans, mu[MAXN], f[MAXN], pr[MAXN], sum[MAXN], inv, cnt; bool vis[MAXN];
voidEuler(){ inv = (Mod * 3 + 1) / 4; f[1] = 1, mu[1] = 1; for (int i = 2; i <= 1e7; i++) { if (!vis[i]) { pr[++cnt] = i, mu[i] = -1, f[i] = (1 - i + Mod) % Mod; } for (int j = 1; j <= cnt && pr[j] * i <= 1e7; j++) { vis[pr[j] * i] = 1; if (i % pr[j] == 0) { mu[i * pr[j]] = 0; f[i * pr[j]] = f[i]; break; } mu[i * pr[j]] = -mu[i]; f[i * pr[j]] = (f[i] * f[pr[j]] % Mod + Mod) % Mod; } } for (int i = 1; i <= 1e7; i++) sum[i] = (sum[i - 1] + f[i] * i % Mod) % Mod; }
signedmain(){
Euler();
read(t); while (t--) { read(n), read(m); int up = min(n, m); ans = 0; for (int i = 1, last = 1; i <= up; i = last + 1) { last = min(min(n / (n / i), m / (m / i)), up); ans = (ans + (sum[last] - sum[i - 1] + Mod) % Mod * ((n / i + 1) * (n / i) % Mod) % Mod * ((m / i + 1) * (m / i) % Mod) % Mod) % Mod; } printf("%lld\n", ans * inv % Mod); }
#include<map> #include<cstdio> #include<vector> #include<iostream> #include<algorithm> #define int long long usingnamespace std; constint MAXN = 1e5 + 5; constint Mod = (1ll << 31);
int q, cnt, lev, pr[MAXN], mu[MAXN], f[MAXN], g[MAXN], sum[MAXN], h[MAXN], bit[MAXN], ans[MAXN]; bool vis[MAXN]; map<int, int> re;
intlowbit(int x){ return x & -x; } voidupdate(int p, int val){ for (int i = p; i <= 1e5; i += lowbit(i)) bit[i] = (bit[i] + val) % Mod; } intquery(int p){ int res = 0; for (int i = p; i; i -= lowbit(i)) res += bit[i]; return res; }
structQuestions { int a, n, m, ind; }; Questions que[MAXN];
structNum { int val, ind; } tmp[MAXN]; vector<int> add[MAXN];
voidread(int& x){ x = 0; int f = 1; char c = getchar(); while (c < '0' || c > '9') { if (c == '-') f = -f; c = getchar(); } while (c >= '0' && c <= '9') { x = (x << 3) + (x << 1) + (c ^ 48); c = getchar(); } x *= f; }
signedmain(){
Euler(); for (int i = 1; i <= 1e5; i++) tmp[i].val = f[i], tmp[i].ind = i; sort(tmp + 1, tmp + MAXN - 4, [](const Num& x, const Num& y) { return x.val < y.val; }); for (int i = 1; i <= 1e5; i++) { if (tmp[i].val != tmp[i - 1].val) re[++lev] = tmp[i].val; add[lev].push_back(tmp[i].ind); // printf("%d %d %d\n", tmp[i].val, tmp[i].ind, re[tmp[i].val]); } // printf("\n");
read(q); for (int i = 1; i <= q; i++) read(que[i].n), read(que[i].m), read(que[i].a), que[i].ind = i; sort(que + 1, que + 1 + q, [](const Questions& x, const Questions& y) { return x.a < y.a; });
for (int i = 1, last = 0; i <= q; i++) {
if (que[i].a != que[i - 1].a) { int pos = 0; for (pos = last + 1; re[pos] <= que[i].a && pos <= lev; pos++) { for (int k = 0; k < add[pos].size(); k++) { int x = add[pos][k]; // printf("%d %d %d-\n", x, f[x], re[x]); for (int t = 1; t * x <= 1e5; t++) { h[t * x] = (h[t * x] + f[x] * mu[t] + Mod) % Mod; update(t * x, (f[x] * mu[t] + Mod) % Mod); } } } last = pos - 1; // printf("\n"); }
int res = 0, up = min(que[i].n, que[i].m); for (int l = 1, r = 1; l <= up; l = r + 1) { r = min(que[i].n / (que[i].n / l), que[i].m / (que[i].m / l)); r = min(r, up); res = (res + (query(r) - query(l - 1)) * (que[i].n / l) % Mod * (que[i].m / l) % Mod + Mod) % Mod; } ans[que[i].ind] = res;
} for (int i = 1; i <= q; i++) { printf("%lld\n", ans[i]); }