1. 程式人生 > >洛谷 P2355 團體操隊形

洛谷 P2355 團體操隊形

pla 技術分享 image 自然數 orange 格式 .org ring 有一個

P2355 團體操隊形

題目背景

X中學要團體操比賽了哦。隊形該怎樣排呢?

題目描述

有n(n<=100000)個團體操隊員編號分別為1~n,參加運動會開幕式的團體操表演。其基本隊形(分連續隊形和梅花樁隊形)都可以參加按行排列或者列按排列。這樣就能得到四種隊形排列編號方式。按行(列)排列時每行(列)有r個位置。

如:n=16,r=6,連續隊形按行排列

1 2 3 4 5 6

7 8 9 10 11 12

13 14 15 16

n=16,r=3,連續隊形按列排列

1 4 7 10 13 16

2 5 8 11 14

3 6 9 12 15

n=16,r=7,梅花樁隊形按行排列

1 2 3 4

5 6 7

8 9 10 11

12 13 14

15 16

n=16,r=5,梅花樁隊形按列排列

1 6 11 16

4 9 14

2 7 12

5 10 15

3 8 13

現請你編寫程序指出編號為m的團體操隊員所處位置的行號和列號。

輸入輸出格式

輸入格式:

第一行只有一個自然數k,表明隨後的k行中每行都有一個問題的描述信息。每個問題的描述信息為:n x y r m。其中x為隊形代號,1表示連續隊形,2表示梅花樁隊形;y表示排列方式,1表示按行排列,2表示按列排列。

輸出格式:

依次輸出每一個問題的解。解的格式為p q。分別表示編號為m的團體操隊員所處的位置的行編號和列編號。

輸入輸出樣例

輸入樣例#1: 復制
2
16 1 1 6 11
16 2 2 5 11
輸出樣例#1: 復制
2 5 1 5

說明

n,r<=100000

有公式可計算。

這是原題題目圖片:
技術分享圖片

思路:首先應該讀清楚題意,明白梅花樁的隊形是什麽含義。

我花了很久,才明白梅花樁隊形是怎麽排列的。

然後,就可以打一個暴力,然後就可以找規律了。

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using
namespace std; int t; int n,x,y,r,m; int main(){ scanf("%d",&t); while(t--){ scanf("%d%d%d%d%d",&n,&x,&y,&r,&m); if(x==1){ int a=(m-1)/r+1,b=m%r; if(b==0) b=r; if(y==2) swap(a,b); printf("%d %d ",a,b); } else{ int a=(m-1)/r+1,b=m%r; if(b==0) b=r; int X,Y; X=2*a-1; if(b>(r+1)/2) X++; if(b<=(r+1)/2) Y=b*2-1; else Y=(b-(r+1)/2)*2; if(y==2) swap(X,Y); printf("%d %d ",X,Y); } } } /**/

洛谷 P2355 團體操隊形