★实验任务

伊姐姐热衷于各类数字游戏,24 点、2048、数独等轻轻松松毫无压力。一 日,可爱的小姐姐邀请伊姐姐一起玩一种简单的数字 game,游戏规则如下: 一开始桌上放着 n 张数字卡片,从左到右按数字 1-n 放置,小姐姐按以下步 骤取卡片 小姐姐取出最左边的一张牌,藏于袖中;
小姐姐将此时剩余卡牌的最左边的 p 张移到最右边,假设桌上的牌为 1 2 3 4 5,移动最左边的两张卡片后结果为 3 4 5 1 2。注意当桌上卡片数量小于 p 时不 进行这步操作。 所有卡牌都被藏起来以后,游戏结束。
这是个十分简单的数字 game,然而伊姐姐因为紧张丧失游戏能力,你能帮 助伊姐姐统计,小姐姐第 k 次,第 2k 次…第 ik 次(i<=n/k)藏于袖中的卡片吗?

★数据输入

输入第一行为三个正整数 n(1<=n<=100000),p(0<=p<=10),k(0<k<=100),含 义在题目中给出。

★数据输出

输出为两行,第一行输出你总共要输出的卡片数量 m。 第二行 m 个数,按顺序输出小姐姐第 k 次,第 2k 次…第 mk 次藏的卡片。

输入示例 输出示例
6 3 2 3
5 6 3
输入示例 输出示例
10 1 3 3
5 2 8

★思路

当可以执行“将此时剩余卡牌的最左边的 p 张移到最右边”操作时,可以用队列来模拟这个操作——前三个数字依次出队,入队。但是要注意执行操作前要保证队列长度比p大一,因为操作的顺序是先取走一张牌,在执行。否则会越界。



其他的输出就很简单啦!

★Code

#include<iostream>
#include<math.h>
#include<queue>
using namespace std;
int main()
{
int n,p,k,count=0;
scanf("%d %d %d",&n,&p,&k);
printf("%d\n",n/k);
queue<int>q;
for(int i=1;i<=n;i++)
q.push(i);
while(q.size()>p)
{
int temp1=q.front();
q.pop();
count++;
if(count%k==0)
cout<<temp1<<" ";
for(int i=0;i<p;i++)
{
int temp2=q.front();
q.pop();
q.push(temp2);
}
}
while(!q.empty())
{
int temp3=q.front();
q.pop();
count++;
if(count%k==0)
cout<<temp3<<" ";
}
return 0;
}

算法与数据结构实验题 4.1 伊姐姐数字 game的更多相关文章

  1. 算法与数据结构实验题 6.4 Summary

    ★实验任务 可怜的 Bibi 丢了好几台手机以后,看谁都像是小偷,他已经在小本本上记 下了他认为的各个地点的小偷数量. 现在我们将 Bibi 的家附近的地形抽象成一棵有根树.每个地点都是树上的 一个节 ...

  2. 算法与数据结构实验题 6.3 search

    ★实验任务 可怜的 Bibi 刚刚回到家,就发现自己的手机丢了,现在他决定回头去搜索 自己的手机. 现在我们假设 Bibi 的家位于一棵二叉树的根部.在 Bibi 的心中,每个节点 都有一个权值 x, ...

  3. 算法与数据结构实验题 4.2 小 F 打怪

    ★实验任务 小 F 很爱打怪,今天因为系统 bug,他提前得知了 n 只怪的出现顺序以及击 倒每只怪得到的成就值 ai.设第一只怪出现的时间为第 1 秒,这个游戏每过 1 秒 钟出现一只新怪且没被击倒 ...

  4. 算法与数据结构实验题6.4 order (二叉树)

    1.题目: 2.代码: #include<iostream> #include<algorithm> using namespace std; struct Node { in ...

  5. 算法与数据结构实验题 5.2 Missile

    1.题目: 2.解题思路: 把每个点对应的两条半径求出,之后对d1进行升序排序,对应d2也改变位置.其中一个圆心的半径r1确定之后,除去第一个圆包围的点,在其余点中找到另外一个圆的最长的半径r2,此时 ...

  6. 数据结构_yjjsj(伊姐姐数字游戏)

    问题描述 伊姐姐热衷于各类数字游戏, 24 点. 2048.数独等轻轻松松毫无压力.一日,可爱的小姐姐邀请伊姐姐一起玩一种简单的数字 game,游戏规则如下:一开始桌上放着 n 张数字卡片,从左到右按 ...

  7. 基础算法和数据结构高频题 II

    DFS的两种理解方式:1. 按照实际执行顺序模拟 (适合枚举型DFS,下节课内容)2. 按照DFS的定义宏观理解 (适合分治型DFS,本节课内容) 1 Convert BST to Greater T ...

  8. 第三章 基础算法和数据结构高频题 I

    区间类问题 1 Missing Interval public List<String> findMissingRanges(int[] nums, int lower, int uppe ...

  9. DS实验题 sights

    算法与数据结构实验题 6.3 sights ★实验任务 美丽的小风姑娘打算去旅游散心,她走进了一座山,发现这座山有 n 个景点, 由于山路难修,所以施工队只修了最少条的路,来保证 n 个景点联通,娇弱 ...

随机推荐

  1. Vue清除所有JS定时器

    Vue清除所有JS定时器 在webpack + vue 的项目中如何在页面跳转的时候清除所有的定时器 JS定时器会有一个返回值(数字),通过这个返回值我们可以找到这个定时器 在vue项目中可以使用路由 ...

  2. border-radius__边框圆角

    1.四个参数: border-radius: 值1 值2 值3 值4;顺序:从左开始,顺时针顺 div{ width: 200px; height: 100px; background-color: ...

  3. 一分钟完成pip安装

    很多实用Python的小伙伴都需要使用pip安装相应的包,对于初学者而已,检查遇到pip安装不成功的情况,如以下典型错误: Traceback (most recent call last): Fil ...

  4. checked和unchecked转换

    static unsafe void Main(string[] args) { unchecked //checked 运行时候引发异常 { int n = int.MaxValue; n++; C ...

  5. Java 8 中有趣的操作 Stream

    Stream 不是java io中的stream 对象创建 我们没有必要使用一个迭代来创建对象,直接使用流就可以 String[] strs = {"haha","hoh ...

  6. C++编译错误杂记

    目录 2018年12月23日 error: no matching function for call to ××× 2018年12月10日 error: expected ')' before '* ...

  7. [POJ3090]Visible Lattice Points(欧拉函数)

    答案为3+2*∑φ(i),(i=2 to n) Code #include <cstdio> int T,n,A[1010]; void Init(){ for(int i=2;i< ...

  8. java中集合部分的笔记

    集合类框架概要Collection<E> boolean removeIf(Predicate<? super E> filter)//删除满足条件的元素,如果Collecti ...

  9. Java设计模式(15)——行为模式之策略模式(Strategy)

    一.概述 概念 UML简图 角色 二.实践 我们先将上述的UML图的抽象情况下的代码写出,然后再给出一个具体的例子 策略接口——当然如果有一些公共的行为,应当使用抽象类! /** * 策略接口 * * ...

  10. MySQL入门第三天(上)——函数与视图

    一.MySQL函数 同样的,完整的函数可以参照开源中国的手册:http://tool.oschina.net/apidocs/apidoc?api=mysql-5.1-zh 1.字符函数 CONCAT ...