題目: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結尾。輸出...