Problem F
阿新 • • 發佈:2017-07-27
esc new 一行 sample title courier nbsp 方向 limit
Sample Output
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 84 Accepted Submission(s) : 25
Problem Description 某部隊進行新兵隊列訓練,將新兵從一開始按順序依次編號,並排成一行橫隊。訓練的規則例如以下:從頭開始一至二報數。凡報到二的出列,剩下的向小序號方向靠攏,再從頭開始進行一至三報數。凡報到三的出列,剩下的向小序號方向靠攏。繼續從頭開始進行一至二報數。。。,以後從頭開始輪流進行一至二報數、一至三報數直到剩下的人數不超過三人為止。
Input
本題有多個測試數據組。第一行為組數N,接著為N行新兵人數。新兵人數不超過5000。
Output
共同擁有N行,分別相應輸入的新兵人數,每行輸出剩下的新兵最初的編號。編號之間有一個空格。
Sample Input
2 20 40
Sample Output
1 7 191 19 37#include<stdio.h> int w,a; int x[10000],s[10000]; int main() { int i,j,l,k,c,b,n,m; scanf("%d",&n); while(n--) { scanf("%d",&a); for(i=1;i<=a;i++) x[i]=i; w=1; while(a>3) { k=a; if(w%2!=0) { j=1;//剛開始這個地方出錯了錯寫成j=0; for(i=1;i<=k;i++) { if(i%2!=0) { s[j]=x[i]; x[j]=s[j]; j++; } else a--; } } else{ j=1;//<span style="font-family: 'Courier New', Courier, monospace;">剛開始這個地方出錯了錯寫成j=0;</span> for(i=1;i<=k;i++) { if(i%3!=0) { x[j]=x[i]; j++; } else a--; } } w++; } for(i=1;i<=a;i++) printf("%d ",x[i]); printf("\n"); } return 0; }
Problem F