文件详细信息

下载本文件

本文件的大小为 692 字节。

#include<cstdio>
const int n=1000;
bool G[n+1][n+1];
int k;
int calc(int k){
	int cnt=0;
	while(k){
		k>>=1;
		cnt++;
	}
	return cnt;
}
void add(int u,int v){
	G[u][v]=G[v][u]=true;
}
int main(){
	scanf("%d",&k);
	if(k==1){
		puts("2\nNY\nYN");
		return 0;
	}
	add(1,3);
	add(1,4);
	add(3,5);
	add(3,6);
	add(4,7);
	int bit=calc(k)-1;
	if((k>>(bit-1))&1)add(4,6);
	for(int i=2,j=i*3;i<=bit;i++,j+=3){
		add(j-1,j+2);
		add(j-1,j+3);
		add(j,j+2);
		add(j,j+3);
		add(j+1,j+4);
		if((k>>(bit-i))&1)add(j+1,j+3);
	}
	int _n_=bit*3+4;
	add(_n_-2,2);
	add(_n_-1,2);
	printf("%d\n",_n_);
	for(int i=1;i<=_n_;i++){
		for(int j=1;j<=_n_;j++)putchar(G[i][j]?'Y':'N');
		putchar('\n');
	}
	return 0;
}