#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) 回帖