Description

给定区间[L,R],请统计有多少对整数A,B(L<=A,B<=R)满足A xor B的值在二进制表示下,去掉所有前导0后是回文串

Input

第一行包含一个正整数T(1<=T<=100),表示测试数据的组数。
每组数据包含一行两个整数L,R(0<=L<=R<=10^12),含义如题面所述。

Output

对于每组数据输出一行一个整数,即满足条件的整数对个数。
枚举位数,从两侧向中间数位dp
#include<cstdio>
#include<cstring>
#define F(i,n) for(int i=0;i<n;++i)
typedef long long i64;
const int M=;
int T;
i64 L,R;
i64 f[M+][][][][];
i64 min(i64 a,i64 b){return a<b?a:b;}
inline int tr(int a,int b){return a==?b:a;}
i64 cal(i64 m1,i64 m2){
if(m1<||m2<)return ;
i64 mn=min(m1,m2);
i64 ans=;
for(int p1=M;p1>=-;--p1){
memset(f,,sizeof(f));
f[p1+][(m1>>p1+)==(mn>>p1+)][][(m2>>p1+)==(mn>>p1+)][]=;
f[p1+][][][][]+=mn>>(p1+);
int l,r;
for(l=p1,r=;l>=r;--l,++r){
int xb1=(m1>>l&)-,xb2=(m1>>r&)-;
int yb1=(m2>>l&)-,yb2=(m2>>r&)-;
F(x1,)F(x2,)F(y1,)F(y2,)
for(int z=(l==p1);z<;++z)
F(t1,)F(t2,)if(l>r||t1==t2){
f[l][tr(x1,t1-xb1)][tr(t2-xb2,x2)][tr(y1,(t1^z)-yb1)][tr((t2^z)-yb2,y2)]+=f[l+][x1][x2][y1][y2];
}
}
F(x1,)F(x2,)F(y1,)F(y2,)if(tr(x1,x2)!=&&tr(y1,y2)!=)ans+=f[l+][x1][x2][y1][y2];
}
return ans;
}
int main(){
for(scanf("%d",&T);T;--T){
scanf("%lld%lld",&L,&R);
printf("%lld\n",cal(R,R)+cal(L-,L-)-cal(L-,R)-cal(R,L-));
}
return ;
}

bzoj4918: 回文数对的更多相关文章

  1. hdu1282回文数猜想

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

  2. C语言 · 特殊回文数

    问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n . 输入格式 输入一行,包含一个正整数n. 输 ...

  3. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  4. luogu1207双重回文数[usaco1.2]Dual Palindromes

    题目描述 如果一个数从左往右读和从右往左读都是一样,那么这个数就叫做“回文数”.例如,12321就是一个回文数,而77778就不是.当然,回文数的首和尾都应是非零的,因此0220就不是回文数. 事实上 ...

  5. luogu10125回文数[noip1999 Day1 T1]

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  6. 洛谷 P1015 回文数 Label:续命模拟QAQ

    题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数. 例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数. 又如:对于10进制数 ...

  7. 2016中国大学生程序设计竞赛(长春)-重现赛 1010Ugly Problem 回文数 模拟

    Ugly Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  8. 回文数 第N个回文数

    判断回文数还是不难,如果能转为字符串就更简单了. 如果是求第N个回文数呢. 12321是一个回文数,这里先考虑一半的情况. 回文数的个数其实是有规律的.如: 1位回文数: 9个 2位回文数: 9个 3 ...

  9. 合工大OJ 1331 回文数

    Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数. 任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其和不是回文数, ...

随机推荐

  1. USER 版本与ENG 版本差异

    [Description] Android USER 版本与ENG 版本的差异   [Keyword] USER ENG user eng 用户版本 工程版本 差异   [Solution] Goog ...

  2. 建立自己的javaBean --成功

    1.用记事本新建一个java 程序,文件名为TestBean.java ,文件内容如下: package test; public class TestBean{ private String nam ...

  3. MAC中安卓开发环境的下载

    今天终于为我的Macbook Pro Retina搭建好了Android开发环境,几经折磨,差点放弃了: 总结如下:1.最好选择ADT Bundle,这里面已经集成好了Eclipse.ADT.Andr ...

  4. sql,将一天所有记录按小时划分

    mysql: select date_format(H_TIME,'%H') as HOUR, ROUND(AVG(H_TEMPERATURE),1) as TEMP, ROUND(AVG(H_HUM ...

  5. VC++ 6.0 C8051F340 USB PC侧通信 Demo

    // HelloWorld.cpp : Defines the entry point for the console application. // /*********************** ...

  6. 判断颜色信息-RGB2HSV(opencv)

    前言 项目车号识别过程中,车体有三种颜色黑车黑底白字.红车红底白字.绿车黄底绿字,可以通过判断车体的颜色信息,从而判断二值化是否需要反转,主要是基于rgb2hsv函数进行不同颜色的阈值判断. matl ...

  7. PDB调试模块

    这里主要是一些对于调试常用的命令:1.直接通过命令端输入进行调试 以pdb调试模式运行(主要用这个) python3 -m pdb file.py 2.在代码中导入pdb模块 import pdb 功 ...

  8. 设置ip地址、掩码、网关、DNS

    @echo offcolor f8mode con cols=40 lines=8echo.echo.echo      设置IP为:echo.set /p ip=              192. ...

  9. iOS7,iOS8和iOS9的区别

    iOS7,iOS8和iOS9的区别:iOS7.0 1.iOS 7是iOS面世以来在用户界面上做出改变最大的一个操作系统.iOS 7抛弃了以往的拟物化设计,而采用了扁平化设计. 苹果在重新思考 iOS ...

  10. make: *** No rule to make target `/thread_native.h', needed by `ossl.o'. Stop

    修改 Makefile 增加 top_srcdir = ../.. 即可 该文件大多存于ruby源文件下 PS:有时也可能是makefile文件多了空格所致