@xiaoziyao
2021-06-26T10:46:21.000000Z
字数 601
阅读 932
解题报告
给定,构造个元素互不相同的四元组,使得每个四元组的最大公约数为。
求所有元素最大值最小的一组构造。
有点套路的MO题。
首先把所有四元组除以,那么所有四元组的最大公约数为。
考虑任意一个四元组都只能存在一个偶数,那么奇数起码三个,于是我们答案的下界为。
构造一组方案达到下界:
由于,我们贪心的让方案内的差尽可能小,于是我们直接把最近的三个奇数和一个偶数放在一个四元组内,即第组为。
由不难得知两两之间都为,于是方案合法。
时间复杂度。
#include<stdio.h>
int n,k;
int main(){
scanf("%d%d",&n,&k);
printf("%d\n",(6*n-1)*k);
for(int i=0;i<n;i++)
printf("%d %d %d %d\n",(6*i+1)*k,(6*i+2)*k,(6*i+3)*k,(6*i+5)*k);
return 0;
}