棋盘是由许多个六边形构成的,共有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>