• 算法与数据结构实验题 2.2 幸运儿


    ★实验任务

    泡泡最近下了个饱了吗 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

    ★思路

    测试几组数据发现

    输入奇数直接输出,输入偶数折半输出

    ★Code

     
                #include<iostream>
    using namespace std;
    int main()
    {
    	int a;
    	cin >> a;
    	if (a % 2 == 1)
    	{
    		cout << a;
    	}
    	else
    		cout << a / 2;
    	return 0;
    }
            
    
  • 相关阅读:
    osgEarth学习
    《C++ Primer》 第12章 类
    C++中 指针与引用的区别
    C++ primer笔记第15章 面向对象编程
    Pandas数据去重和对重复数据分类、求和,得到未重复和重复(求和后)的数据
    Python转页爬取某铝业网站上的数据
    使用Nginx+Tomcat实现分离部署
    使用icomoon字体图标详解
    如何配置PetShop网站
    nopcommerce开源框架技术总结如何实现把controller中的Model的数据传入VIEW中,并生产相应的Html代码
  • 原文地址:https://www.cnblogs.com/031602523liu/p/7676116.html
Copyright © 2020-2023  润新知