洛谷 P2355 團體操隊形
阿新 • • 發佈:2017-12-03
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> usingnamespace 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 團體操隊形