思路:按照要求更改,打印数组即可,注意n=1依旧需要"Discarded cards:"。
#include <cstdio>
#include <cstring>
#include <string>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <iomanip>
#include <map>
using namespace std;
const int MAXN = 100;
vector<int> a;
bool isok(){
if (a.size() != 2) return true;
return false;
}
void discard(){
int s = a.size();
printf(" %d", a[0]);
int t = a[1];
for (int i = 2; i < s; i++)
a[i-2] = a[i];
a[s - 2] = t;
a.resize(s - 1);
}
int main(){
int n;
while (scanf("%d", &n) && n){
if (n == 1){
printf("Discarded cards:\n");
printf("Remaining card: 1\n");
}
else{
for (int i = 0; i < n; i++)
a.push_back(i + 1);
printf("Discarded cards:");
while (isok()){
discard(); printf(",");
}
discard();
printf("\n");
printf("Remaining card: %d\n", a[0]);
}
a.clear();
}
return 0;
}