A. Kids Seating(构造)Codeforces Round #681 (Div. 2, based on VK Cup 2019-2020 - Final)

原题链接: https://codeforces.com/contest/1443/problem/A

在这里插入图片描述
测试样例

input
3
2
3
4
output
6 4
4 6 10
14 10 12 8

题意: 给你一个整数 n n n,现在你需要从编号 1 1 1~ 4 ⋅ n 4\cdot n 4n中选出 n n n个编号使得这些编号之间 g c d ≠ 1 gcd≠1 gcd=1,不能整除。

解题思路: 这显然是一个构造问题,根据样例我们其实也能发现一些问题,如果 g c d ≠ 1 gcd≠1 gcd=1,那么 g c d gcd gcd自然是大于1的数,而范围是 4 ⋅ n 4\cdot n 4n,又因为要选取 n n n个编号,故我们的 g c d gcd gcd只能限制在2,(即编号递增2)。那么还有一个要处理的地方就是不能整除,假设我定义好一个起始位置 2 ∗ n 2*n 2n,那么按照我们依次递增2,最后的编号为 2 ∗ n + ( n − 1 ) ∗ 2 2*n+(n-1)*2 2n+(n1)2,而起始位置的最小倍数也是在 4 ⋅ n 4\cdot n 4n,所以必然不可能被整除 ,其他也一样。所以我们按这样构造即可解决问题。

AC代码

/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h>//POJ不支持

#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=a;i>=n;i--)

using namespace std;

const int inf=0x3f3f3f3f;//无穷大。
const int maxn=1e5;//限定值。
typedef long long ll;

int t,n;
int main(){
	while(cin>>t){
		while(t--){
			cin>>n;
			cout<<2*n<<" ";
			int temp=2*n;
			rep(i,1,n-1){
				temp+=2;
				cout<<temp<<" ";
			}
			cout<<endl;
		}
	}
	return 0;
}
posted @   unique_pursuit  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示