D. Dreamoon and Sets(构造,规律)

自己推出来还是非常巧妙

k = 1 考虑k=1的时候怎么构造

k ! = 1 k 因为k!=1时只需要把上面的构造方案都成上k即可满足

手推一下,发现下面这样就能满足

1 3 5 4

7 9 11 10

13 15 17 16

? + ( 1 ) 发现什么?每组都是三个连续奇数+(最大奇数-1的偶数)

? k = 1 这是啥原理?因为k=1时要求每组内的数互质

g c d = 2 , 1 3 一旦选两个偶数就会导致gcd=2,那么选1个偶数3个奇数保证最小

, 偶数尽可能贴近选的三个奇数,否则偶数会和奇数有公因子

足够近的数是不会有公因子的

/*
构造最小的m,利用[1,m]
构造出n个不同的4元素集合, 每对数的gcd=k 

2 4 6 8 10 12 14 16 18

最后一定是选4n个数字,使得每个数字是k的倍数
分成n组每组4个,彼此互质

1 2 3 11
5 7 8 9

1 2 3 5
4 7 9 11
6 13 15 17
*/
#include <bits/stdc++.h>
using namespace std;
int n,k;
int main()
{
	cin >> n >> k;
	//3个奇数就分一组
	int ci=n*2*3-1;//第ci个奇数才行
	printf("%d\n",ci*k);
	int ji=1;
	for(int i=1;i<=n;i++)
	{
		printf("%d %d %d %d\n",ji*k,(ji+2)*k,(ji+4)*k,(ji+3)*k);
		ji+=6;
	}
}   

猜你喜欢

转载自blog.csdn.net/jziwjxjd/article/details/107979106