稍微用脑子想一想,要是一个回文数,要么s[i]==s[i+1]要么s[i]==s[i+2]就可以实锤了

所以多开两维表示最近两位选的是什么数就完了

注意前导0

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long LL;
const int mbit=; LL f[mbit][mbit][mbit];//第i位,第i位和第i-1位放的是啥 -----> 非回文数个数 (有前导零)
LL g[mbit];//枚举到第i位 -----> 非回文数个数 (无前导零)
void init()
{
g[]=,g[]=;
for(int i=;i<=;i++)
for(int j=;j<=;j++)
if(i!=j)f[][i][j]=;
for(int i=;i<=;i++)
{
for(int u=;u<=;u++)
for(int v=;v<=;v++) if(u!=v)
for(int w=;w<=;w++) if(u!=w&&v!=w)
f[i][u][v]+=f[i-][v][w];
g[i]=g[i-];
for(int u=;u<=;u++)
for(int v=;v<=;v++)
g[i]+=f[i][u][v];
}
} int clen,c[mbit];
LL getnum(LL k)
{
if(k<)return ;
LL t=k;clen=;
while(t>){c[++clen]=t%;t/=;}
if(clen==)clen++;
c[clen+]=-;c[clen+]=-; LL ret=;
for(int i=clen;i>=;i--)
{
int li=c[i]-;if(i==)li++;
for(int j=;j<=li;j++)
{
if(j==c[i+]||j==c[i+])continue;
if(i==)ret++;
else if(i==)
{
for(int k=;k<=;k++)
if(k!=c[i+]&&(k!=j||(i==clen&&j==)))ret++;
}
else
{
if(i==clen&&j==)
{
ret+=g[i-];
continue;
} for(int u=;u<=;u++)
for(int v=;v<=;v++)
if(u!=v&& u!=c[i+]&&u!=j&&v!=j )
ret+=f[i-][u][v];
}
}
if(c[i]==c[i+]||c[i]==c[i+])break;
}
return ret;
} int main()
{
freopen("a.in","r",stdin);
freopen("a.out","w",stdout);
init();
LL L,R;
scanf("%lld%lld",&L,&R);
printf("%lld\n",getnum(R)-getnum(L-)); return ;
}

最新文章

  1. NopCommerce Alipay 支付插件
  2. 时间控件之赋值问题:datetimebox
  3. FlashFXP 破解代码
  4. sql 遍历结果print和表格形式
  5. CentOS6.5 yum安装 apache+svn安装配置
  6. [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】
  7. yieId浅谈
  8. MD5加密字符串-备用
  9. IOS 请求服务器的方式
  10. Android应用程序线程消息循环模型分析
  11. 谷歌浏览器訪问不了啦,oh shit!
  12. Android组件生命周期(一)
  13. Google addword 策略
  14. ELK日志检索并邮件微信通知
  15. Hibernate 的原生 SQL 查询
  16. 数据结构之表(C语言实现)
  17. c/c++ 网络编程 UDP 改变网关和网卡名字
  18. centos7之zabbix3.2搭建
  19. linux 压缩和解压缩
  20. ionic2 处理android硬件返回按钮

热门文章

  1. 联合权值(codevs 3728)
  2. 玩转css样式选择器----当父元素有多个子元素时选中第一个
  3. Python入门--1--基本中的基本
  4. php——离线执行任务
  5. AC日记——凌乱的yyy 洛谷 P1803
  6. 洛谷—— P1605 迷宫
  7. Crypto另外两段加密解密的代码
  8. Set 技巧之一
  9. maven删除不必要的依赖;优化pom依赖研究
  10. iOS 合并.a文件,制作通用静态库