發現題目函數本質是:

1.將某一數x的末尾1去掉

2.不斷將這個數/2,直到遇到新的1

我們發現一個數z可以用y步到達數x,記x二進制長度為c,分2種情況討論:

1.x是奇數,則z的前c個二進制數必須與x相等

2.x是偶數,則z的第c位可以任意選,所以只要c-1位相等即可

我們弄出答案區間再統計答案即可

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll k,a,b;
ll ct(ll x){
	ll c=1,kk=k,rr=0;
	while(1){
		ll l=kk,r=kk+c-1;
		if(r<=x)rr+=r-l+1;
		if(x<l)break;
		if(l<=x&&x<=r){
			rr+=x-l+1;
			break;
		}
		kk<<=1;
		c<<=1;
	}
	if(k%2==0)rr*=2;
	return rr;
}
int main(){
	scanf("%lld%lld%lld",&k,&a,&b);
	if(!k){
		printf("%lld",b-a+1);
		return 0;
	}
	printf("%lld",ct(b)-ct(a-1));
}

jzoj3084的更多相关文章

随机推荐

  1. 论Java的重要性

    最近,最新的世界编程语言排名最近出炉了,Java位居世界第一.          不仅如此,Java以17.856%超过第二名C语言的8.726%两倍以上,其实,这一现象是十分反常的,因为,在前几年, ...

  2. ubuntu安装rubyOnRails

    https://gorails.com/setup/ubuntu/16.04#ruby-rbenv 文章很详细

  3. python中的特殊成员

    python中的特殊成员: 小甲鱼论坛总结

  4. mysql 外键理解

    假定一个班级的学生个人信息表: 什么是外键 在设计的时候,就给表1加入一个外键,这个外键就是表2中的学号字段,那么这样表1就是主表,表2就是子表.(注意: 外键不一定须要作为从表的主键.外键也不一定是 ...

  5. Win7 qt-windows-x86-msvc2015-5.6.0 DLL依赖库打包

    今天开始系统的学习QT,第一个测试的问题就是在纯净的系统中如何正常运行,也就是找出QT生成的exe的依赖库问题 网上搜了下可以简单粗暴的用 D:\Qt\Qt5.6.0\5.6\msvc2015\bin ...

  6. WM_PAINT和WM_ERASEBKGND消息

    1.OnPaint()函数是窗口重绘消息WM_PAINT的响应函数,当窗口重绘时会产生WM_ERASEBKGND消息和WM_PAINT消息,而且WM_ERASEBKGND会先于WM_PAINT产生,所 ...

  7. MFC调试时无法解析外部类

    1.是否添加头文件 2.是否对类进行声明

  8. 安装SourceTree遇到的一个个坑

    之前在公司的电脑上满心欢喜的安装了下,很顺利就成功了,回来在自己电脑上安装,结果坑不能停,以此来纪念下吧! 下载完成后,进行安装: 这里我是申请了个账户,选第一个user an existing ac ...

  9. mysql 入门 jdbc

    在java程序中连接mysql,先要到mysql的网站上面去下载驱动,并且安装,默认安装在c盘(我的都是默认安装,目录为C:\Program Files\MySQL\MySQL Connector J ...

  10. 论文翻译技巧--Notepad替换回车