欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CF476D Dreamoon and Sets (数学/思维)

程序员文章站 2024-03-08 23:15:04
...

CF476D Dreamoon and Sets (数学/思维)
要熟记的两个定理:
1、相邻的单数互为质数。
2、相邻的两个数互为质数。
(我们小学二年级学过 - 毕导)
一位大佬的题解:

当k等于1时,推几组数据。比如1,2,3,57,8,9,1113,14,15,1719,20,21,2325,26,27,291,2,3,5;7,8,9,11;13,14,15,17。19,20,21,23;25,26,27,29。就会发现是以6为周期,而对每一个周期内的数乘以k就会使周期内的数两两的最大公约数为k。

若k!=1,我们把四元组中的数都除以k,那么四元组内的数是互质的。所以只需要找出前n个互质的四元组即可。
考虑x是奇数,那么(x,x+1,x+2,x+4)(x,x+1,x+2,x+4)一定满足要求,且不能更小。

考虑x是偶数,那么(x,x+1,x+3,x+5)(x,x+1,x+3,x+5)也不一定满足要求,而且不能更小

若已经取出了前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;
}