投票游戏 vote

投票游戏 vote

题目描述

信奥班的同学总是这么无聊,他们现在喜欢玩一种投票游戏。游戏规则如下,把参与游戏的同学们编号由1到N,
然后他们开始投票,每个人只能投一票,只能是赞成或者反对,投票结果下来后如果赞成人数严格大于反对的
人数,那么编号最小的那位同学便被踢出游戏,剩下的同学继续开始投票,直到投票僵持下来(比如剩两个人
的时候一个人反对一个人赞成就会一直僵持下去),这时候游戏结束。XJ准备了一些小红花,会把他们平均分
给这些剩下的同学。每个同学都想得到最多的小红花,而且不想自己被踢出。给出同学个数N,问最后剩下的同
学个数,假定信奥班的同学都无比机智。

输入

一行,一个整数N

输出

一行,一个整数表示剩下的同学个数。

样例输入

3

样例输出

2

数据范围

30% 1<=n<=50.
100% 1<=n<=5000.

题解:

一道很像海盗分金币的趣味题,我们采取逆推方法。
当只剩2个人时肯定僵持,所以如果有3个人,则定会淘汰一个,如果4个人,因为都不想被淘汰,12号肯定反
对,3,4号定会赞成,则僵持,所以有5,6,7个人时定会淘汰到只剩4个人,依次类推,则如果有n个人,定会只
剩2^log2(n)个人。

源代码:

#include <bits/stdc++.h>
using namespace std;
int n, ans;
int main() {
	cin>>n;
	ans=1;
	while(ans*2<=n) {
		ans*=2;
	}
	cout<<ans<<endl;
	return 0;
}

AC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值