AtCoder [ARC118C] Coprime Set 题解

原文发布时间:2024-08-05 12:39。

构造题。

\(a=x\times y,b=x\times z,c=y\times z\),其中 \(x,y,z\) 互质,则 \((a,b)=x,(a,c)=y,(b,c)=z,(a,b,c)=1\)

因为 \(1\) 和任意数的最大公因数都为 \(1\),所以我们只需要构造三个数满足上文的 \(a,b,c\) 即可。因为 \(A_i\le 10000\),所以构造的越小越好,\(2\times 3,2\times 5,3\times 5\)\(6,10,15\) 能很好的满足要求。

已经解决了第三个要求,接下来完成第一和第二个要求。因为 \((a,b),(a,c),(b,c)\) 都不为 \(1\),所以它们的倍数的最大公约数也不为 \(1\)。因此只需要构造 \(6,10,15\) 的倍数即可,注意去重和判断有没有超过 \(10000\)

代码:

#include <bits/stdc++.h>

using namespace std;

#define int long long

signed main() {
	int n;
	cin >> n;
	int cnt = 0;
	cout << "6 10 15 ";
	for (int i = 2; cnt <= n - 4 && 6 * i <= 10000; i++) {
		cout << 6 * i << ' ';
		cnt++;
	} 
	for (int i = 2; cnt <= n - 4 && 10 * i <= 10000; i++) {
		if (10 * i % 6 != 0) {
			cout << 10 * i << ' ';
			cnt++;
		}
	} 	
	for (int i = 2; cnt <= n - 4 && 15 * i <= 10000; i++) {
		if (15 * i % 6 != 0 && 15 * i % 10 != 0) {
			cout << 15 * i << ' ';
			cnt++;
		}
	} 
	return 0;
}
posted @ 2025-02-10 17:09  wwqwq  阅读(17)  评论(0)    收藏  举报