您的位置:首页 > 其它

UVa 10935 解题报告

2017-07-06 13:49 302 查看
关于队列运用的一道简单题

PE 两次 注意·格式

#include <bits/stdc++.h>

using namespace std;

int main()

{

    while(1){

        int n;

        cin >> n;

        if(n==0)break;

        queue<int> q;

        for(int i=1;i<=n;i++){

            q.push(i);

        }

        cout <<"Discarded cards:";

        if(!q.empty()&&q.back()!=q.front()){

            for(int i=1;i<n;i++){

                cout <<" " << q.front();

                if(i!=n-1)cout << ",";

                q.pop();

                int temp = q.front();

                q.push(temp);

                q.pop();

            }

        //cout << endl;  如果在这个地方换行  输入数据为 1  的时候格式错误

        }

        cout <<endl; // 在此处换行才AC

        cout << "Remaining card: " << q.front() << endl;

    }

    return 0;
}

原题如下:

Given is an ordered deck of n cards numbered 1

to n with card 1 at the top and card n at the

bottom. The following operation is performed as

long as there are at least two cards in the deck:

Throw away the top card and move

the card that is now on the top of the

deck to the bottom of the deck.

Your task is to nd the sequence of discarded

cards and the last, remaining card.

Input

Each line of input (except the last) contains a

number n 50. The last line contains `0' and

this line should not be processed.

Output

For each number from the input produce two

lines of output. The rst line presents the se-

quence of discarded cards, the second line re-

ports the last remaining card. No line will have

leading or trailing spaces. See the sample for the

expected format.

Sample Input

7

19

10

6

0

Sample Output

Discarded cards: 1, 3, 5, 7, 4, 2

Remaining card: 6

Discarded cards: 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 4, 8, 12, 16, 2, 10, 18, 14

Remaining card: 6

Discarded cards: 1, 3, 5, 7, 9, 2, 6, 10, 8

Remaining card: 4

Discarded cards: 1, 3, 5, 2, 6

Remaining card: 4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uva uva10593 队列