NC20896. 龙魂合一萨坎与晶石
描述
「文词只是浪费时间。 毁灭这语言人人都懂。」 ——萨坎沃
输入描述
第一行一个正整数 T ,表示有 T 组测试数据。
接下去每组测试数据输入一行,包含一个正整数 n 。
输出描述
每个测试数据输出 n+1 行,每行四个整数 px, py, qx, qy ,表示一条由点 (px, py) 和点 (qx, qy) 连成的直线。点 (px, py) 和点 (qx, qy) 必须落在方格阵的边界上,且两点不能相同。每行的四个整数之间请用一个空格隔开,行末请不要添加多余空格。文末请不要输出多余信息。
示例1
输入:
1 2
输出:
0 0 1 2 1 2 2 0 0 0 2 0
说明:
C++14(g++5.4) 解法, 执行用时: 14ms, 内存消耗: 984K, 提交时间: 2018-11-18 15:35:57
#include<bits/stdc++.h> int main() { int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); if(n == 1){ printf("0 0 1 1\n"); printf("0 1 1 1\n"); continue; } printf("0 %d %d %d\n",n,n,n-1); printf("%d %d %d 0\n",n-1,n,n); for(int i = 0;i < n-1; i+= 2){ printf("%d %d %d %d\n",i,0,n,n-1-i); } for(int i = 1;i < n-1;i+= 2){ printf("%d %d %d %d\n",0,i,n-1-i,n); } } }
C++11(clang++ 3.9) 解法, 执行用时: 10ms, 内存消耗: 888K, 提交时间: 2020-08-07 12:19:09
#include<bits/stdc++.h> using namespace std; int main() { int i,n,T; scanf("%d",&T); while(T--) { scanf("%d",&n); if(n==1){printf("0 0 1 1\n0 0 1 0\n");continue;} for(i=0;i<n-1;i+=2)printf("%d %d %d %d\n",i,0,n,n-i-1); for(i=1;i<n-1;i+=2)printf("%d %d %d %d\n",0,i,n-i-1,n); printf("%d %d %d %d\n%d %d %d %d\n",0,n,n,n-1,n,0,n-1,n); } return 0; }