1.题目:
矩形回旋
Time Limit: 1000MS Memory limit: 65536K
题目描述
有一个由 n*m(n是行数,m为列数) 的方格组成的矩形阵列。
现在从左上角开始顺时针旋转走动,遇到矩形边框或者遇到已经过的方格就转向继续,直到走完所有方格。求最后结束点的坐标(横坐标位置从1到m,纵坐标从1到n)。
输入
第一行输入一个数T代表测试数据个数(T<=20)。接下来T行每行两个正整数n,m ( 0 < n,m < 2^31)。
输出
对于每个输入n,m,输出最后的坐标(中间输出一个空格)。每行输出一个结果。
示例输入
1 3 3
示例输出
2 2
2.思路:
只需判断n是否是偶数、奇数
n是偶数,若n<=m,输出(n/2+1,n/2)
若n>m,输出(n/2,n/2+1)
n是奇数,((n+1)/2,m-(n+1)/2),其中n代表n,m中较小的那个数
3.代码:
#include<stdio.h>
int main()
{
int cases,n,m;
int a,b;
scanf("%d",&cases);
while(cases--)
{
scanf("%d%d",&n,&m);
if(n>m)
{
a=m;
b=n;
}
else
{
a=n;
b=m;
}
if(a%2==0)
{
printf("%d %d\n",a/2+1,a/2);
}
else
{
printf("%d %d\n",(a+1)/2,b-a/2);
}
}
return 0;
}