2020杭电多校第八场 1008 Hexagon

【2020杭电多校第八场 1008 Hexagon】题目链接
看到题目正解上面那一堆复杂的东西是不是有些迷茫,那就和我一起来找规律吧!
首先我们看半径是偶数的情况 2020杭电多校第八场 1008 Hexagon
文章图片

然后是偶数的情况 2020杭电多校第八场 1008 Hexagon
文章图片

画的好累
是不是很容易就看出其中的蹊跷,规律还是很明显的。
因为不同人的画法不同,所以有不同情况,大体上都差不多。
代码

#include 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; }

    推荐阅读