AT3557 Four Coloring

题目链接

题解

先把每个格子看做一个点 (所谓的切比雪夫距离的转化) ,然后把这些点组成的矩形旋转45度,再把他塞到一个每个格子大小为\(d*d\)的网格图中,那么在一个格子上的点颜色相同

代码

#include<bits/stdc++.h>
using namespace std;
#define re register
#define ll long long
#define in inline
#define get getchar()
in int read()
{
	int t=0; char ch=get;
	while(ch<'0' || ch>'9') ch=get;
	while(ch<='9' && ch>='0') t=t*10+ch-'0', ch=get;
	return t;
}
int h,w,d;
char s[4]={'R','Y','G','B'};
int main()
{
	h=read();
	w=read();
	d=read();
	for(re int i=1;i<=h;i++){
		for(re int j=1;j<=w;j++)
		{
			int x=(i+j+w)/d,y=(i-j+w)/d;
			//cout<<x<<' '<<y<<endl;
			cout<<s[(x%2)*2+y%2];
		}
		cout<<endl;
	}
}

posted @ 2019-10-25 08:09  yzhx  阅读(130)  评论(1编辑  收藏  举报