题解 | #集合与最大公因数#
集合与最大公因数
https://ac.nowcoder.com/acm/problem/236212
每一行输出四个整数要求他们任意两个数的最大公因子为n,那么我们知道连续的三个奇数之间是没有公因子的,但任意两个偶数之间是一定有因子的,那么就转换成了找到在一个最小的区间内找到四个没有公因子的数,首选就是三个连续的奇数,然后再在三个奇数之中选一个偶数,例如1,2,3,5或1,3,4,5,下一个区间则是7,8,9,11,或7,9,10,11就找到了一个循环区间大小为6,每隔6个数能找到四个没有公因子的数,然后再乘以一个k,那么最大公因子就为k了
//通过暴力发现每一次都是在6的倍数减1 //合适的有1 2 3 5 // 1 3 4 5 #include<iostream> #include<cstring> #include<algorithm> using namespace std; int main() { int n,k; cin>>n>>k; cout<<k*(6*n-1)<<endl; for(int i = 0; i < n; i ++) cout<<k*(6*i+1)<<" "<<k*(6*i+2)<<" "<<k*(6*i+3)<<" "<<k*(6*i+5)<<endl; }