专栏文章

题解:P12707 [KOI 2021 Round 1] 橡皮擦

P12707题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mip4p5jq
此快照首次捕获于
2025/12/03 06:07
3 个月前
此快照最后确认于
2025/12/03 06:07
3 个月前
查看原文
好奇一下,这题是怎么黄的。

思路

观察示例,我们发现每次(B)操作其实就是在给每个数的格子号除以 22,根据这个结论,我们不难想到:对于一个正整数 xx,对其不断整除,那一次其余数为 11,它就被删掉了。
进一步思考,对于一个正整数 xx,我们可以求出它的二进制,从右往左数第一个 11 在第几位,这个数就会在第几轮被删除。
要想使一个数留到最后,这个数的二进制一定要仅有最高位是 11 且位数尽量高。最终,我们得出结论:留到最后的数一定是小于 NN22 的最大整数次幂。
理论结束,实践开始!
CPP
#include<bits/stdc++.h>
using namespace std;
int main() {
	int n,x;
	cin>>n;
	x=log2(n);//函数的作用:求以2为底,n的对数
	x=1<<x;   //求小于N的2的最大整数次幂
	cout<<x;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...