专栏文章

题解:CF2053C Bewitching Stargazer

CF2053C题解参与者 2已保存评论 1

文章操作

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

当前评论
1 条
当前快照
1 份
快照标识符
@miqmm8bh
此快照首次捕获于
2025/12/04 07:16
3 个月前
此快照最后确认于
2025/12/04 07:16
3 个月前
查看原文

CF2053C Bewitching Stargazer

分析

又是一道结论题。
由于两边在进行区间拆分的过程中是严格对称的,所以最终的答案显然是某个系数 cc 乘上中位数。
然后我们发现我们只需要一层一层模拟就好了,我们将 nn 不断除以二,设 nn 本身这一层为第 00 层;如果第 kk 层的 nn 是奇数,令 cntcnt 加上 2k2^k 即可。
代码应该相当好懂,记得把 nn 的值先存一下,后面算中位数还要用到。

AC CODE

CPP
#include<bits/stdc++.h>
using namespace std;
int t;
long long n,k;
int main(){
	cin>>t;
	while(t--){
		cin>>n>>k;
		long long t=n;
		long long tmp=1;
		long long cnt=0;
		while(1){
			if(n<k){
				break;
			}
			if(n%2==1){
				cnt+=tmp;
			}
			n/=2;
			tmp*=2;
		}
		cout<<cnt*(1+t)/2<<"\n";
	}
	return 0;
}

评论

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

正在加载评论...