救濟金發放

2021-07-28 02:29:54 字數 776 閱讀 8148

題目: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列。

get ideas:

1.do while();與 while()相比,do while();無論如何會先計算一次再比較

2.逆時針和順時針數數的唯一區別只是下標是加1還是減1。 把這個+1/-1抽象為「步長」引數,就可以把兩個數數統一了

p = (p + l + n - 1) % n + 1;//這裡的-1,再+1很重要,它對逆時針數數沒什麼影響,但是對順時針的邊界有很重要的影響

#includeint circle[21];

int n;

int go(int p,int l,int k)

while(circle[p] == 0); //do while先執行再判斷 }

return p;

}int main()

circle[p1] = circle[p2] = 0;

if(left)

printf(",");

} printf("\n");

} return 0;

}

救濟金發放

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,...

救濟金發放

題目描述 題目描述 n n 20 個人站成一圈,逆時針編號為 1 n。有兩個 a從1開始逆時針數,b從n開始順時針數。在每一輪中,a數k個就停下來,b數m個就停下來 兩個 有可能能停在同乙個人上 接下來被 選中的1個或2個人離開隊伍。輸入格式 輸入n k m 可能有多組資料,以 0 0 0結尾。輸出...