当前位置: 首页 > 工具软件 > Code_Aster > 使用案例 >

A. Coder

施靖
2023-12-01


time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Iahub likes chess very much. He even invented a new chess piece named Coder. A Coder can move (and attack) one square horizontally or vertically. More precisely, if the Coder is located at position (x, y), he can move to (or attack) positions (x + 1, y)(x–1, y)(x, y + 1) and (x, y–1).

Iahub wants to know how many Coders can be placed on an n × n chessboard, so that no Coder attacks any other Coder.

Input

The first line contains an integer n (1 ≤ n ≤ 1000).

Output

On the first line print an integer, the maximum number of Coders that can be placed on the chessboard.

On each of the next n lines print n characters, describing the configuration of the Coders. For an empty cell print an '.', and for a Coder print a 'C'.

If there are multiple correct answers, you can print any.

Sample test(s)
input
2
output
2
C.
.C
解题说明:此题是给定一个n*n的棋盘,然后在棋盘上面放棋子,保证任意两个棋子在上下左右四个方向不相邻,问最多能放多少个棋子。最简单的一种方法应该是第一行奇数列放棋子,然后第二行是偶数列放棋子,第三行再奇数列,这样交替下去。用简单的例子可以统计出最多放棋子的个数与n之间的关系,如果n为偶数,那么就是n*n/2,如果n为奇数,最后一行会比上一个偶数行多放一个棋子,为n*n/2+1。知道总数后,接下来按照规律打印图形即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include <algorithm>
using namespace std;

int main()
{
	int n, i, j;
	scanf("%d", &n);
	printf("%d\n", (n*n) / 2 + n % 2);
	for (i = 1; i <= n; i++)
	{
		for (j = 1; j <= n; j++)
		{
			if (i % 2 == 1 && j % 2 == 1 || i % 2 == 0 && j % 2 == 0)
			{
				printf("C");
			}
			else
			{
				printf(".");
			}
		}
		printf("\n");
	}
	return 0;
}


 类似资料:

相关阅读

相关文章

相关问答