数据结构_XingYunX(幸运儿)
数据结构_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(幸运儿)的更多相关文章
- 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)
前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...
- 一起学 Java(三) 集合框架、数据结构、泛型
一.Java 集合框架 集合框架是一个用来代表和操纵集合的统一架构.所有的集合框架都包含如下内容: 接口:是代表集合的抽象数据类型.接口允许集合独立操纵其代表的细节.在面向对象的语言,接口通常形成一个 ...
- 深入浅出Redis-redis底层数据结构(上)
1.概述 相信使用过Redis 的各位同学都很清楚,Redis 是一个基于键值对(key-value)的分布式存储系统,与Memcached类似,却优于Memcached的一个高性能的key-valu ...
- 算法与数据结构(十五) 归并排序(Swift 3.0版)
上篇博客我们主要聊了堆排序的相关内容,本篇博客,我们就来聊一下归并排序的相关内容.归并排序主要用了分治法的思想,在归并排序中,将我们需要排序的数组进行拆分,将其拆分的足够小.当拆分的数组中只有一个元素 ...
- 算法与数据结构(十三) 冒泡排序、插入排序、希尔排序、选择排序(Swift3.0版)
本篇博客中的代码实现依然采用Swift3.0来实现.在前几篇博客连续的介绍了关于查找的相关内容, 大约包括线性数据结构的顺序查找.折半查找.插值查找.Fibonacci查找,还包括数结构的二叉排序树以 ...
- 算法与数据结构(九) 查找表的顺序查找、折半查找、插值查找以及Fibonacci查找
今天这篇博客就聊聊几种常见的查找算法,当然本篇博客只是涉及了部分查找算法,接下来的几篇博客中都将会介绍关于查找的相关内容.本篇博客主要介绍查找表的顺序查找.折半查找.插值查找以及Fibonacci查找 ...
- 算法与数据结构(八) AOV网的关键路径
上篇博客我们介绍了AOV网的拓扑序列,请参考<数据结构(七) AOV网的拓扑排序(Swift面向对象版)>.拓扑序列中包括项目的每个结点,沿着拓扑序列将项目进行下去是肯定可以将项目完成的, ...
- 算法与数据结构(七) AOV网的拓扑排序
今天博客的内容依然与图有关,今天博客的主题是关于拓扑排序的.拓扑排序是基于AOV网的,关于AOV网的概念,我想引用下方这句话来介绍: AOV网:在现代化管理中,人们常用有向图来描述和分析一项工程的计划 ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
随机推荐
- SQL多表联查总结
交叉连接:(不常用)返回两个表的笛卡尔乘积(也即全组合排列)中符合查询条件的数据行. 内连接返回连接表中符合连接条件和查询条件的数据行. 左外连接返回符合连接条件和查询条件(即:内连接)的数据行,且还 ...
- Redis底层探秘(二):链表和跳跃表
链表简介 链表提供了高效的节点重排能力,以及顺序性的节点访问方式,并且可以通过增删节点来灵活地跳转链表的长度. 作为一种常用数据结构,链表内置在很多高级的编程语言里面,因为Redis使用C语言并没有内 ...
- 学习动态性能表(16)--v$rowcache
学习动态性能表 第16篇--V$ROWCACHE 2007.6.12 本视图显示数据字典缓存(也叫rowcache)的各项统计.每一条记录包含不同类型的数据字典缓存数据统计,注意数据字典缓存有层次差 ...
- Python 算法之二分查找
二分查找 二分查找又称折半查找 优点是比较次数少,查找速度快,平均性能好 缺点是要求待查表为有序表,且插入删除困难 折半查找方法适用于不经常变动而查找频繁的有序列表. 猜数字游戏 1.生成一个有序列表 ...
- Asp.net工作流workflow实战之工作流启动与继续(三)
工作流帮助类: //让工作流继续沿着书签的位置向下执行value是向书签传递参数 wfc.ResumeBookmark(bookmarkName,value); //把传过来的数据value作为输出参 ...
- 用PHP编写登陆界面
网页的编写用PHP最方便.用php做了最简单的用户登录.创建的程序. 一. MySQL的设计 MySQL设计了两个表:members和sex.两张表的创建语句分别是: create table mem ...
- HDU5478(快速幂)
Can you find it Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)T ...
- 2015.3.31不使用debug/X86文件夹方式解决64/32位问题
传统方法:在解决方案-配置管理器-新建X86平台可以解决32位兼容问题,但是Debug目录下会多出X86文件夹.不方便 另一种方法:在项目名称-属性-生成-目标平台-x86也能解决问题,而且不出现X8 ...
- 什么是SPU、SKU、SKC、ARPU
首先,搞清楚商品与单品的区别.例如,iphone是一个单品,但是在淘宝上当很多商家同时出售这个产品的时候,iphone就是一个商品了. 商品:淘宝叫item,京东叫product,商品特指与商家有关的 ...
- java 多线程系列基础篇(六)之线程让步
1. yield()介绍 yield()的作用是让步.它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权:但是,并不能保证在当前线程调用yield()之后,其 ...