心态炸了(违规自删
  • 板块灌水区
  • 楼主Space_2011
  • 当前回复5
  • 已保存回复5
  • 发布时间2025/1/21 20:36
  • 上次更新2025/1/21 23:25:17
查看原帖
心态炸了(违规自删
1025267
Space_2011楼主2025/1/21 20:36

P3455

#include<bits/stdc++.h>
using namespace std;
#define int long long

const int N = 5e4 + 10;

int T, mu[N], prim[N], cnt;
bool vis[N];

void miu(int n) {
	mu[1] = 1;
	for (int i = 2; i <= n; i++) {
		if (!vis[i]) {
			prim[++cnt] = i;
			mu[i] = -1;
		}
		for (int j = 1; j <= cnt && prim[j] * i <= n; j++) {
			vis[prim[j] * i] = 1;
			if (i % prim[j] == 0)break;
			else mu[i * prim[j]] = -mu[i];
		}
	}
	for (int i = 1; i <= n; i++) mu[i] = mu[i - 1] + mu[i];
}

signed main() {
//	freopen("P3455_1.in","r",stdin);
//	freopen("P3455.out","w",stdout);
	cin >> T;
	miu(N);
	while (T--) {
		int ans = 0, n, m, k, l, r = 0;
		cin >> n >> m >> k;
		n = n / k, m = m / k;
		if (n < m) swap(n, m);
		for (l = 1; l <= m; l = r + 1) {
			r = min(n / (n / l), m / (m / l));
			ans += (mu[r] - mu[l - 1]) * (long long) (n / l) * (m / l);
		}
		cout << ans << endl;
	}
//	system("fc P3455.out P3455_1.out");
	return 0;
}

acwing上过了,luogu上0分

2025/1/21 20:36
加载中...