首页 > 试题广场 >

编程量* 难度* 性能要求*(1秒) 同

[问答题]
编程量*   难度*   性能要求*(1秒)

同学们要参加运动会开幕式团体操表演啦。各个系派出的队排出的队形可有四种形式。例如,图1~图4是按16人排列的队形描述。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


图1 连续队形,按行展开,每行6人

1

4

7

10

13

16

2

s

8

11

14

3

6

9

12

15


图2 连续队形,按列展开,每列3人

l

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


图3 梅花桩队形,技行展开,每行7人

1

6

11

16

4

9

14

2

7

12

5

10

15

3

8

13


图4 梅花桩队形,接列展开,每列5人

其中梅花桩队形的行数或列数投有偶数情形 。

无论哪种队形,部请你能迅速指出某个编号的队员在队列中的行列号。困为领导和裁判们在台上需要及时了解每个队员的表現,将编号与具体队员对应便可以准确地奖优罚差 。 显然这是一个光荣而不怎么艰巨的任务, 请你一定要把握啊!

输入说明

文件中第一行只有一个整数 k(≤100),表明随后有 k组数据。每组数据占一行,由5个以空格照开的整数N、 X、 Y、 R、 M构成。其中:

N(≤10000)表示队列的人数;

X为队形, 1表示连续队形, 2表示梅花桩队形,没有其他队形,

Y为展开方式, 1表示接行展开, 2表示按列展开,没有其他展开方式.

R(≤N)为每行或每列的人数;

M (≤N) 为所要求其行列号的某个队员编号 。

输出说明
依次输出每一个队列中某个队员的行列号 。 行号和列号以空格隔开。


推荐
//===================================
//团体操行列号
//===================================
#include<iostream>
#include<fstream>
using namespace std;
//-----------------------------------
int main() {
  ifstream cin("team.in");
  int n; cin>>n;
  for(int N,X,Y,R,M; n-- && cin>>N>>X>>Y>>R>>m; )
    switch(10*X+Y){
      case 11: cout<<(M-1)/R+1<<" "<<(M-1)%R+1<<"\n"; break;
      case 12: cout<<(M-1)%R+1<<" "<<(M-1)/R+1<<"\n"; break;
      case 21: cout<<2*(M-1)/R+1<<" "<<2*(M-1)%R+1<<"\n"; break;
      case 22: cout<<2*(M-1)%R+1<<" "<<2*(M-1)/R+1<<"\n"; break;
    }
}//==================================

发表于 2018-04-18 20:33:22 回复(0)