有17個人圍成一圈(編號為0~16),從第 0號的人開始從 1報數, 凡報到 3的倍數的人離開圈子,然后再數下去,直到最后只剩下一個人為止。 問此人原來的位置是多少號?
void main() { int a[17] = { 0 };//代表17個人,值為0代表還在,1代表離開 int baoshu = 1;//當前報數的數字,最多49 int total = 17;//當前還剩多少人在 int cur = 0;//17個人的當前人循環到的編號 while (total!=1) { if (cur == 17)//說明已經走到下一圈了,需要保證當前人的編號 { cur = 0; } if (a[cur] == 1)//說明該人已經離開圈子,報數不增加,走向下一人判斷 { cur++; continue; } if (baoshu % 3 == 0) { a[cur] = 1; total -= 1; } baoshu++; cur++; } for (int i = 0; i < 17; i++) { printf("%2d", a[i]); } system("pause"); }