10935 - Throwing cards away I (UVA)

题目链接如下:

Online Judge

代码如下:

#include 
#include 
#include 
#include 
// #define debug

int n;
std::queue remaining;
std::vector discarded;

void clear(std::queue &q){
    std::queue empty;
    std::swap(empty, q);
}

int main(){
    #ifdef debug
    freopen("0.txt", "r", stdin);
    freopen("1.txt", "w", stdout);
    #endif
    while (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 debug
    fclose(stdin);
    fclose(stdout);
    #endif
    return 0;
}

你可能感兴趣的:(UVA,c++)