【题解】CF476D

原题链接

题意

输入 \(n,k\),输出 \(n\) 个四元组满足以下条件:

  • 四元组中任意两个数的最大公约数是 \(k\)
  • 四元组内没有重复的数

要求 \(n\) 个四元组内最大的数最小。

第一行输出最大的数,下面 \(n\) 行输出四元组。

思路

  1. \(k\ne1\),可以把四元组中的 \(4\) 个数都除以 \(k\),那么这 \(4\) 个数就互质了。原题可转换成求前 \(n\) 个互质的四元组。

  2. \(x\) 为奇数时 \((x,x+1,x+2,x+4)\) 一定符合要求

综上,最大数就是 \((n\times6-1)\times k\) 了,其他同理。

代码

#include <iostream>
#include <cstdio>
#define int long long
using namespace std;

int n, k;

signed main()
{
	scanf("%lld%lld", &n, &k);
	printf("%lld\n", k * (n * 6 - 1));
	for (int i = 1; i <= n; i++)
	{
		int x = i * 6 - 5;
		printf("%lld %lld %lld %lld\n", k * x, k * (x + 1), k * (x + 2), k * (x + 4));
	}
	return 0;
}
posted @ 2021-08-07 17:47  mango09  阅读(52)  评论(0编辑  收藏  举报
-->