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

自己推出来还是非常巧妙

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

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

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

1 3 5 4

7 9 11 10

13 15 17 16

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

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

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

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

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

/*
构造最小的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;
	}
}   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值