题目描述
有 nn 个团体操队员编号分别为 1∼n 。其队形(分连续队形和梅花桩队形)可以按行排列或者按列排列,按行(列)排列时每行(列)有 r 个位置。
例1:n=16,r=6,连续队形按行排列。
1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|
7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
例2:n=16,r=3,连续队形按列排列。
1 | 4 | 7 | 10 | 13 | 16 |
---|---|---|---|---|---|
2 | 5 | 8 | 11 | 14 | |
3 | 6 | 9 | 12 | 15 |
例3:n=16,r=7,梅花桩队形按行排列。
1 | 2 | 3 | 4 | |||
---|---|---|---|---|---|---|
5 | 6 | 7 | ||||
8 | 9 | 10 | 11 | |||
12 | 13 | 14 | ||||
15 | 16 |
例4:n=1,r=5,梅花桩队形按列排列。
1 | 6 | 11 | 16 | |||
---|---|---|---|---|---|---|
4 | 9 | 14 | ||||
2 | 7 | 12 | ||||
5 | 10 | 15 | ||||
3 | 8 | 13 |
现请你编写程序指出编号为 m 的团体操队员所处位置的行号和列号。
输入格式
本题有多组数据
第一行只有一个自然数 kk ,表明随后的 kk 行每行都是一组数据。
接下来 k 行,每行都有五个整数,分别表示队伍里的人数、队形代号(11表示连续队形,而22表示梅花桩队形)、排列方式(11表示按行排列,而22表示按列排列)、每行(列)的位置数、和询问位置的队员的编号
输出格式
输出2k 个整数,第 i 对整数表示第 i 组询问的行编号和列编号(不用换行)
输入输出样例
输入 #1
2 16 1 1 6 11 16 2 2 5 11
输出 #1
2 5 1 5
#include<cstdio>
int main()
{
int k,n,x,y,r,m;
scanf("%d",&k);
while(k--)
{
scanf("%d%d%d%d%d",&n,&x,&y,&r,&m);
if(x==1)
{
if(y==1)
printf("%d %d ",(m+r-1)/r,m%r?m%r:r);
else
printf("%d %d ",m%r?m%r:r,(m+r-1)/r);
}
else
{
if(y==1)
{
m=m*2-1;
if(r&1)
printf("%d %d ",(m+r-1)/r,m%r?m%r:r);
else
printf("%d %d ",(m+r-1)/r,((m+r-1)/r)&1?m%r:m%r+1);
}
else
{
m=m*2-1;
if(r&1)
printf("%d %d ",m%r?m%r:r,(m+r-1)/r);
else
printf("%d %d ",((m+r-1)/r)&1?m%r:m%r+1,(m+r-1)/r);
}
}
}
return 0;
}