当前位置: 代码迷 >> 综合 >> 2020杭电多校第八场 1008 Hexagon
  详细解决方案

2020杭电多校第八场 1008 Hexagon

热度:72   发布时间:2023-12-21 00:17:36.0

题目链接
看到题目正解上面那一堆复杂的东西是不是有些迷茫,那就和我一起来找规律吧!

首先我们看半径是偶数的情况

在这里插入图片描述

然后是偶数的情况

在这里插入图片描述
画的好累
是不是很容易就看出其中的蹊跷,规律还是很明显的。
因为不同人的画法不同,所以有不同情况,大体上都差不多。

代码
#include<bits/stdc++.h>
using namespace std;int t,n;void solveji()
{
    for(int k=n-2;k>=1;k-=2){
    int a = 4, b = 2;printf("3");for(int t=1;t<=5;t++){
    for(int i=1;i<=k;i++)printf("%d%d",a,b);printf("%d",a);a++,b++;if(a > 6) a = 1;if(b > 6) b = 1;			}printf("%d",a);for(int i=1;i<=k-1;i++)printf("%d%d",b,a);printf("4");}printf("\n");
}void solveou()
{
    for(int k=n-1;k>=1;k-=2){
    int a = 4, b = 2;printf("3");for(int t=1;t<=5;t++){
    if(t == 5 && k == 1) break;printf("%d",a);for(int i=1;i<=k-1;i++)printf("%d%d",b,a);a++,b++;if(a > 6) a = 1;if(b > 6) b = 1;}if(k != 1){
    printf("%d",a);for(int i=1;i<=k-2;i++)printf("%d%d",b,a);}if(k == 1)printf("3");else printf("4");}printf("\n");
}int main()
{
    scanf("%d",&t);while(t--){
    scanf("%d",&n);if(n % 2) solveji();else solveou();}return 0;
}