ACM 選人問題 救濟金發放)

2022-09-17 05:51:13 字數 744 閱讀 6681

n(n<20)個人站成一圈,逆時針編號為1~n。有兩個**,a從1開始逆時針數,b從n開 始順時針數。在每一輪中,**a數k個就停下來,**b數m個就停下來(注意有可能兩個 **停在同乙個人上)。接下來被**選中的人(1個或者2個)離開隊伍。

輸入n,k,m輸出每輪裡被選中的人的編號(如果有兩個人,先輸出被a選中的)。例 如,n=10,k=4,m=3,輸出為4 8, 9 5, 3 1, 2 6, 10, 7。注意:輸出的每個數應當恰好佔3列。

【分析】

仍然採用自頂向下的方法編寫程式。用乙個大小為0的陣列表示人站成的圈。為了避免 人走之後移動陣列元素,用0表示離開隊伍的人,數數時跳過即可。主程式如下:

#include#define maxn 25

intn,m,k,a[maxn];

int go(int p,int d,int

t)

while(a[p]==0

); }

returnp;}

intmain()

int left=n;

int p1=n,p2=1

;

while

(left)

a[p1]=a[p2]=0

;

if(left)

printf(",

");}

printf("\n

");}

return0;

}

救濟金發放

題目 n n 20 個人站成一圈,逆時針編號為1 n。有兩個 a從1開始逆時針數,b從n開始順時針數。在每一輪中,a數k個就停下來,b數m個就停下來 注意有可能兩個 停在同乙個人上 接下來被 選中的人 1個或者2個 離開隊伍。輸入n,k,m輸出每輪裡被選中的人的編號 如果有兩個人,先輸出被a選中的 ...

救濟金發放

n n 20 個人站成一圈,逆時針編號為1 n。有兩個 a從1開始逆時針數,b從n開始順時針數。在每一輪中,a數k個就停下來,b數m個就停下來 注意有可能兩個 停在同乙個人上 接下來被 選中的人 1個或者2個 離開隊伍。輸入n,k,m輸出每輪裡被選中的人的編號 如果有兩個人,先輸出被a選中的 例如,...

救濟金發放

前言 這個問題琢磨了挺長時間,發現裡面有很多需要考慮和注意的 問題描述 n n 20 個人站成一圈,逆時針編號為1 n。有兩個 a從1開始逆時針數,b從n開始順時針數。在每一輪中,a數k個就停下來,b數m個就停下來 注意有可能兩個 停在同乙個人上 接下來被 選中的人 1個或者2個 離開隊伍。輸入n,...