SDUST - 1437 - Problem 3 矩形回旋 (朗讯杯)
矩形回旋
Description
有一个由 n*m(n是行数,m为列数) 的方格组成的矩形阵列。
现在从左上角开始顺时针旋转走动,遇到矩形边框或者遇到已经过的方格就转向继续,直到走完所有方格。求最后结束点的坐标(横坐标位置从1到m,纵坐标从1到n)。
Input
第一行输入一个数T代表测试数据个数(T<=20)。接下来T行每行两个正整数n,m ( 0 < n,m < 2^31)。
Output
对于每个输入n,m,输出最后的坐标(中间输出一个空格)。每行输出一个结果。
Sample Input
13 3
Sample Output
2 2
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); int T; cin >> T; while(T--){ int n, m, r, c; cin >> n >> m; if(n <= m){ if(n % 2 == 0){ r = n / 2 + 1; c = n / 2; } else{ r = n / 2 + 1; c = m - r + 1; } } else{ if(m % 2 == 0){ r = m / 2 + 1; c = m / 2; } else{ r = n - m / 2; c = m / 2 + 1; } } printf("%d %d\n", r, c); } return 0; }