CF476D Dreamoon and Sets (数学/思维)
程序员文章站
2024-03-08 23:15:04
...
要熟记的两个定理:
1、相邻的单数互为质数。
2、相邻的两个数互为质数。
(我们小学二年级学过 - 毕导)
一位大佬的题解:
当k等于1时,推几组数据。比如。就会发现是以6为周期,而对每一个周期内的数乘以k就会使周期内的数两两的最大公约数为k。
若k!=1,我们把四元组中的数都除以k,那么四元组内的数是互质的。所以只需要找出前n个互质的四元组即可。
考虑x是奇数,那么一定满足要求,且不能更小。
考虑x是偶数,那么也不一定满足要求,而且不能更小
若已经取出了前m个四元组,最大值是y。那么取y下面的奇数一定是最优的。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<bitset>
#include<stack>
#define ls (p<<1)
#define rs (p<<1|1)
//#pragma GCC optimize (2)
//#pragma G++ optimize (2)
#define over(i,s,t) for(register int i = s;i <= t;++i)
#define lver(i,t,s) for(register int i = t;i >= s;--i)
//#define int __int128
#define lowbit(p) p&(-p)
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N = 2e4+7;
int n,k;
int main()
{
cin>>n>>k;
cout<<k*(n*6-1)<<endl;
for(int i = 1;i <= n;++i){
int x = (i-1)*6+1;
cout<<k*x<<" "<<k*(x+1)<<" "<<k*(x+2)<<" "<<k*(x+4)<<endl;
}
return 0;
}