给你n个数,每次取队首元素,输出,然后扔掉。
然后取下一个队首元素,放到队尾。直到队中只有一个元素。
没有什么要说的,就是输出的时候容易表示错误。
我错误是因为
输出第一行的时候,多加了空格。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int f[N],n,m,k;
int main(){
// freopen("a.out","w",stdout);
while(scanf("%d",&n) == 1){
if (!n) break;
printf("Discarded cards:");
int l = 0, r = n - 1;
for (int i = 0; i < n; ++i) f[i] = i+1;
while(l < r){
if (l) printf(", "); else printf(" ");
printf("%d",f[l++]);
f[++r] = f[l++];
}
printf("\nRemaining card: %d\n",f[l]);
}
return 0;
}