题目链接如下:
Online Judge
代码如下:
#include <cstdio>
#include <queue>
#include <vector>
#include <utility>
// #define debugint n;
std::queue<int> remaining;
std::vector<int> discarded;void clear(std::queue<int> &q){std::queue<int> empty;std::swap(empty, q);
}int main(){#ifdef debugfreopen("0.txt", "r", stdin);freopen("1.txt", "w", stdout);#endifwhile (scanf("%d", &n) == 1 && n){clear(remaining);discarded.clear();for (int i = 1; i <= n; ++i){remaining.push(i);}while (remaining.size() >= 2){discarded.push_back(remaining.front());remaining.pop();remaining.push(remaining.front());remaining.pop();}printf("Discarded cards:");for (int i = 0; i < discarded.size(); ++i){printf(" %d%s", discarded[i], i == discarded.size() - 1 ? "" : ",");}printf("\n");printf("Remaining card: %d\n", remaining.front());}#ifdef debugfclose(stdin);fclose(stdout);#endifreturn 0;
}