UVa10935

題目:
https://onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=21&page=show_problem&problem=1876

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <queue>
#include <vector>

using namespace std;

int main(){
int n;
queue<int> card;
vector<int> discarded;
while(cin >> n){
if(n == 0) break;
discarded.clear();
for(int i=1; i<=n; ++i){
card.push(i);
}
while(card.front() != card.back()){
discarded.push_back(card.front());
card.pop();
card.push(card.front());
card.pop();
}
cout << "Discarded cards:";
if(discarded.size() > 1){
cout << ' ' << discarded[0];
for(int i=1; i<discarded.size(); ++i){
cout << ", " << discarded[i];
}
}
else if(discarded.size() == 1) cout << ' ' << discarded[0];
cout << '\n' << "Remaining card: " << card.front() << '\n';
card.pop();
}
return 0;
}