竞赛讨论区 > 为什么f题这样过不了,我自己测评了2到500的样例都可以
头像
罗钰楚
发布于 2022-05-28 13:45
+ 关注

为什么f题这样过不了,我自己测评了2到500的样例都可以

#include<iostream>

using namespace std;

int main()
{
	int n;
	scanf("%d", &n);

	if (n == 1)printf("1\n1 1\n");
	else if (n == 2) {
		printf("4\n");
		for (int i = 1; i <= 2; i++) {
			for (int j = 1; j <= 2; j++)printf("%d %d\n", i, j);
		}
	}
	else if (n == 3) {
		printf("4\n");
		printf("1 2\n2 1\n2 3\n3 2\n");
	}
	else if (n == 4) {
		printf("5\n");
		printf("2 2\n2 4\n3 3\n4 2\n4 4\n");
	}
	else if (n == 5)printf("5\n1 3\n2 2\n2 4\n3 1\n4 4\n");
	else if (n == 6) {
		printf("6\n");
		printf("2 6\n4 2\n4 6\n5 3\n6 4\n6 6\n");
	}
	else if (n == 7)printf("7\n4 2\n4 4\n4 6\n5 5\n6 4\n6 6\n7 3\n");
	else if (n == 8)printf("8\n4 7\n5 2\n6 3\n6 5\n7 4\n8 3\n8 5\n8 7\n");
	else if (n == 9)printf("9\n6 2\n6 4\n6 6\n6 8\n7 5\n8 4\n8 6\n9 3\n9 7\n");
	else if (n == 10)printf("10\n1 1\n1 2\n2 1\n2 2\n3 3\n4 4\n7 7\n8 8\n9 9\n10 10\n");
	else {
		bool flag = false;//n为奇数
		if (n % 2 == 0)
		{
			flag = true;
			n--;
		}

		int ans = 0;
		if ((n - 1) % 6 == 0)
		{
			int t = (n - 1) / 6;
			ans = (t + 1) * 2 * 2 + flag;//偶数加一
			printf("%d\n", ans);
			printf("%d %d\n", 1, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, 2 * i + 1);
			printf("%d %d\n", 1, n);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, n - 2 * i);
			//下半部
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 2 * i + 1, 1);
			printf("%d %d\n", n, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", n - 2 * i, 1);
			printf("%d %d\n", n, n);

			if (flag == true)
				printf("%d %d\n", n + 1, n + 1);
		}
		else
		{
			int t = (n - 1) / 6;
			ans = (t + 1) * 2 * 2 + 2 + flag;//偶数加一
			printf("%d\n", ans);
			printf("%d %d\n", 1, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, 2 * i + 1);
			printf("%d %d\n", 1, 2 * t + 3);//多一个
			printf("%d %d\n", 1, n);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 1, n - 2 * i);
			//下半部
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", 2 * i + 1, 1);
			printf("%d %d\n", 2 * t + 3, 1);//多一个
			printf("%d %d\n", n, 1);
			for (int i = 1; i <= t; i++)
				printf("%d %d\n", n - 2 * i, 1);
			printf("%d %d\n", n, n);

			if (flag == true)
				printf("%d %d\n", n + 1, n + 1);
		}
	}
}

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐