UVA133救濟金發放

2022-07-17 04:54:13 字數 844 閱讀 1728

題目

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列。

輸入:

10 4 3

輸出:

_ _ 4_ _ 8,_ _ 9_ _ 5,_ _ 3_ _ 1,_ _ 2_ _ 6,_ 10,_ _ 7

#include#include#includeusing namespace std;

const int max=25;

int a[max],n,k,m;

int go(int p,int d, int t)

while(a[p]==0);//尋找下乙個不為0的數字,

} return p;

}int main()

//將 pa pb所在位置置為0,表示領完救濟金離開

a[pa]=0;a[pb]=0;

if(left) printf(",");

}printf("\n");

} return 0;

}

救濟金發放(uva 133)

n個人占城一圈,逆時針編號為1 n.有兩個 a從1開始逆時針數,b從n順時針開始。在每一輪中,a數k個數就停下來,b數m個就停下來 注意有可能連個 停在同乙個人上 接下來被 選中的人離開隊伍。輸入n,k,m輸出每輪裡被選中的人的編號 如果有兩個人 先輸出被a選中的 注意 輸出的每個數應當恰好佔3列。...

UVa 133 救濟金發放

這題的話,我們首先對於移動函式可以知道,因為只是順逆的關係,也就是加一或者減一,所以我們每次移動的時候,都補上乙個小於n的最大整數,然後取模,這樣就不會有負數,而且加之後的結果不會超過2 n,所以我們取模的結果就是0到n 1,然後加上1就可以得到原位置了。題目中的逆時針就是加一,順時針就是減一。in...

救濟金發放UVa 133

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