数据结构_XingYunX(幸运儿)

问题描述

  泡泡最近下了个饱了吗 app,这个 app 推出了个坑蒙拐骗的红包系统,只要
花一块钱买张一元抵用券,就有参与 20 元红包的抽奖机会,抽奖界面会实时显
示当前参与抽奖的人数,当参与抽奖人数达到 n 的时候,开奖一次,抽取一名幸
运儿获得 20 元红包。
一次偶然的机会,机智的泡泡偷瞄到了生成幸运儿的源码:每当有人参与抽
奖,这个人就进入队列。
开奖时,每轮淘汰一个人,直到剩下一个人:每轮从第一个人开始,从 1 开
始报数。
1. 如果当前的人报的数不超过队列人数的一半,那么这个人出队,回到队
尾等待下一次报数,下一个人继续报下一个数。
2. 如果当前的人报的数超过了队列人数的一半,那么这个人出局,即未中
奖。这一轮结束,下一轮就从紧接着的下一个人开始重新开始报数。
显然最后会只剩下一个人,这个人就是幸运儿啦~
机智的泡泡马上意识到,当 n 已知的时候,幸运儿其实可以预知到是第几个
参与抽奖的人。
机智的泡泡马上又意识到,假设第 x 个参与抽奖的人是幸运儿,那么只要看
到屏幕上显示的人数达到 x-1 的时候参与抽奖,就能成为那个幸运儿啦~
机智的泡泡马上从小道消息得知了 n,正试图预知出 x 的值。
机智的泡泡马上把锅甩给了你。

★数据输入
输入第一行为一个正整数 n。
对于 50%的数据, 1<=n<=1000;
对于 80%的数据, 1<=n<=6000;
对于 100%的数据, 1<=n<=1000000000;

★数据输出
输出 x。

输入示例 输出示例
5 5
输入示例 输出示例
6 3

解题思路

  思路1:通过观察多组数据,若输入为奇数,输出为本身;若输入为偶数,输出为一半

  思路2(未验证):若输入为奇数n,每次排除掉的数为  (上个排除掉的数+(n/2+1))的结果对n取模

          若输入为偶数n,排除掉的数为     ( (上个排除掉的数+(n/2+1))   或    (上个排除掉的数+(n/2))   再取模)    轮流进行

code

 #include <stdio.h>

 int main()
{
int num;
scanf("%d",&num);
if(num%==)
printf("%d\n",num>>);
else
printf("%d\n",num); return ;
}
/*
1 2 3 4 5
3 1 4 2 5
+3 1 2 3 4 5 6
4 1 5 2 6 3
+4 +3 +4 +3 +4 +3 1 2 3 4
3 1 4 2 1 2 3 4 5 6 7
4 1 5 2 6 3 7 num奇数->num
num偶数->num/2
*/

数据结构_XingYunX(幸运儿)的更多相关文章

  1. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  2. 一起学 Java(三) 集合框架、数据结构、泛型

    一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...

  3. 深入浅出Redis-redis底层数据结构(上)

    1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...

  4. 算法与数据结构(十五) 归并排序(Swift 3.0版)

    上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...

  5. 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)

    本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...

  6. 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找

    今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...

  7. 算法与数据结构(八) AOV网的关键路径

    上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...

  8. 算法与数据结构(七) AOV网的拓扑排序

    今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...

  9. 掌握javascript中的最基础数据结构-----数组

    这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...

随机推荐

  1. Python+Apache+CGI完全配置

    http://www.tuicool.com/articles/jIZfaqQ 操作系统环境:Ubuntu 15.10 0.需求原因 想在我的Linux上架设Apache来运行CGI程序,方便以后用A ...

  2. 图m的着色问题(搜索)

    图的m着色问题 [问题描述]        给定无向连通图G和m种不同的颜色.用这些颜色为图G的各顶点着色,每个顶点着一种颜色.如果有一种着色法使G中每条边的2个顶点着不同颜色,则称这个图是m可着色的 ...

  3. javascript之面试题精讲

    from:http://blog.csdn.net/q121516340/article/details/51332454 1,检测数组的几种方式: Array.isArray(); es5 toSt ...

  4. 横向排列两个多个div盒子的方法(CSS浮动清除float-clear/inline)/办法

    最近在做一个div css切割,昨晚发现了长期以来一直无记录下来的问题!关于兼容IE跟FF的float属性.趁现在还清醒赶紧记下笔记先:一.并排在一行的两个div样式有这种情况:ie或者ff下对于子d ...

  5. TCP状态详解

            CLOSED: 这个没什么好说的了,表示初始状态.   LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了.   SYN_RCV ...

  6. bootstrap-table 父子表入门篇

    官方文档:http://bootstrap-table.wenzhixin.net.cn/zh-cn/documentation/#多语言 一.引入js.css <!-- 引入bootstrap ...

  7. uptime命令查看系统启动时间和运行时间、查看linux系统负载

    1.uptime命令输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00 2.查看/proc/uptime文件计算 ...

  8. XXXAction-validation.xml文件中报错:Referenced file Contains errors

    我们需要引用与验证器配置相关的dtd文件,这个文件可以在xwork-core-2.3.1.2.jar下找到(xwork-validator-1.0.3.dtd) 网上有很多处理办法,如下所示: 1.直 ...

  9. idea右键单击没有 svn选项处理办法

    问题一: IntelliJ IDEA打开带SVN信息的项目不显示SVN信息,项目右键SVN以及图标还有Changes都不显示解决方法 在VCS菜单中有个开关,叫Enabled Version Cont ...

  10. c语言-树的基础知识

    第一.树的定义:   1.有且只有一个称为根的节点   2.有若干个互不相交的子树,这些子树本身也是一颗树 第二.专业术语: 树的深度:从根节点到最低层,节点的层数 ,称之为树的深度.  根节点是第一 ...