模拟题选写——六边形

这是一道关于六边形棋盘生成的模拟问题,棋盘由不同编号的六边形组成,新生成的六边形必须与相邻的不同编号,并优先选择出现次数最少和编号最小的。题目要求求解第N个生成的六边形的编号。样例输入和输出给出了部分测试用例。解决此问题的关键在于理解六边形的生成规则和度的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

棋盘是由许多个六边形构成的,共有5种不同的六边形编号为1到5,棋盘的生成规
则如下:
1.从中心的一个六边形开始,逆时针向外生成一个个六边形。
2.对于刚生成的一个六边形,我们要确定它的种类,它的种类必须满足与已生成的相
邻的六边形不同。
3.如果有多个种类可以选,我们选择出现次数最少的种类。
4.情况3下还有多个种类可以选,我们选择数字编号最小的。
现在要你求第N个生成的六边形的编号?
前14个六边形生成图如下:

1.jpg

输入格式:
第一行:T,表示数据组数
接下来T行,每行一个数:N,表示第N个六边形
输出格式:
共t行,每行一个数,表示第N个数据的答案
样例输入:
4
1
4
10
100
样例输出:
1
4
5
5
数据范围:
100%数据满足
1<=T<=20
1<=N<=10000
30%数据满足
1<=N<=100
时间限制:
0.1S
空间限制:
256M
提示:
膜拜孙业!!!
LJOJ提高组模拟11
本题是我见过比较巧妙的模拟题了,本题的思路就是对于内圈的点的最终度都为6,最后利用其放六边形的性质,最后
1、他一定与他的前一个六边形相邻
2、内部的六边形度没到6之前,一定会一直在该六边形旁边转,度为6时跳到下一个六边形也会与其相邻。
这样把代码打出来即可,以后遇到这样一圈圈放的题目考虑度是一个不错的方法。

%:pragma GCC optimize(3)
#include<bits/stdc++.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值