• 2015 HUAS Summer Training#1~C


    10935 Throwing cards away I 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 find 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 first line presents the sequence of discarded cards, the second line reports 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

    解题思路:首先这个循环是以0的输入为结束标志,所以在判断输入时要先看看它是不是为0.这个解题要用到队列,队列的特点是先进先出,利用front()进行数据的读取,pop()进行出队,push()进行入队,基本上就可以写出一个轮廓。注意一点的是,这个步骤要在这个队列不为空的情况下进行。还要注意题目要求的输出格式,输出第一行的最后一个数字后面没有逗号隔开,所以在每一次读取与出队之后要判断这个队列是否为空,然后再进行下一步操作。

    程序代码:
    #include<cstdio> #include<queue> #include<iostream> using namespace std; int main() { int n; while(scanf("%d",&n)==1&&n) { int x; queue<int>s; for(int i=1;i<=n;i++) s.push(i); int flag=0; printf("Discarded cards:"); while(!s.empty()) { x=s.front (); s.pop (); if(s.empty()) break; if(!flag)cout<<" "<<x; else cout<<", "<<x; flag=1; x=s.front(); s.pop(); s.push(x); } cout<<endl; printf("Remaining card:"); printf(" %d ",x); } return 0; }
  • 相关阅读:
    Tips_信息列表(手风琴)效果的多种实现方法
    JS_ Date对象应用实例
    JS _函数作用域及变量提升
    C_使用clock()函数获取程序执行时间
    C_输入一个整数N,输出从0~N(算法思考)
    Chrome_查看 webSocket 连接信息
    Chrome_断点调试(使用vue-resource进行数据交互)
    Tips_利用padding实现高度可控的分隔线
    CSS_圣杯布局和双飞翼布局
    Tips_一级菜单栏实现
  • 原文地址:https://www.cnblogs.com/chenchunhui/p/4654704.html
Copyright © 2020-2023  润新知