传送门

分析

首先这是一个询问一段区间内的个数的问题,所以我们可以用差分的思想用sum(R)-sum(L-1)。然后我们考虑如何求出sum(n),我们用dp[i][j][k][t]表示考虑到第i位,最后一个数是j,是否已经小于n和是否已经考虑完前导零。至于转移和一般的套路一样,详见代码。注意最后记得考虑n自己。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
long long a[],dp[][][][];
inline long long go(long long n){
if(!n)return ;
long long m=n,i,j,k,cnt=;
long long h=,lo=;
while(){
if(m<h&&m>=lo)break;
h*=,lo*=;
}
while(lo){
a[++cnt]=m/lo;
m%=lo;
lo/=;
}
memset(dp,,sizeof(dp));
dp[][][][]=;
a[]=;
for(i=;i<=cnt;i++){
for(j=;j<=a[i];j++){
k=a[i-];
if(abs(j-k)>=){
if(j<a[i])dp[i][j][][]+=dp[i-][k][][];
else dp[i][j][][]+=dp[i-][k][][];
}
if(!k){
if(j<a[i]&&j)dp[i][j][][]+=dp[i-][][][];
else if(j<a[i]&&!j)dp[i][j][][]+=dp[i-][][][];
else if(!j)dp[i][j][][]+=dp[i-][][][];
else dp[i][j][][]+=dp[i-][][][];
}
}
for(j=;j<=;j++){
for(k=;k<=;k++){
if(abs(j-k)>=){
dp[i][j][][]+=dp[i-][k][][];
}
if(!k){
if(j)dp[i][j][][]+=dp[i-][k][][];
else dp[i][j][][]+=dp[i-][k][][];
}
}
}
}
long long ans=dp[cnt][a[cnt]][][];
for(i=;i<=;i++)
ans+=dp[cnt][i][][];
return ans;
}
int main(){
long long a,b;
scanf("%lld%lld",&a,&b);
cout<<go(b)-go(a-)<<endl;
return ;
}

最新文章

  1. Oracle碎碎念~1
  2. CompletionService/ExecutorCompletionService/线程池/concurrent包
  3. [课程设计]Scrum 1.3 多鱼点餐系统开发进度(系统主界面框架&amp;美化)
  4. Erlang数据类型的表示和实现(5)——binary
  5. java 12-4 StringBuffer类的替换、反转、截取功能
  6. 创建Android Virtual Device
  7. NGUI 的使用教程与实例(入门)(1 )
  8. 课程助理For Windows(预览版,正方教务系统学生查分工具)
  9. 如何解决ajax跨域问题
  10. IO库 8.1
  11. 搭建开源java博客并通过域名访问
  12. Linux网络配置。Win10能ping虚拟机但虚拟机ping不通Win10,关闭Win10防火墙就好。
  13. C# WinForm 富文本编辑器 用kindeditor实现本地图片只选取不上传到编辑器
  14. Django-CRM项目学习(六)-rbac模块(权限组件)
  15. selenium3+java+POM 跨浏览器测试之------读取配置文件
  16. 调用wait的SIGCHLD信号处理函数
  17. MySql数据库学习笔记(1)
  18. 【leetcode】412. Fizz Buzz
  19. Codeforces Gym - 101102B - The Little Match Girl
  20. oracle完全恢复数据库

热门文章

  1. python导入图片
  2. Leetcode 509. Fibonacci Number
  3. layui.js框架的启发
  4. [BZOJ1022][SHOI2008]小约翰的游戏
  5. Codeforces 808D. Array Division
  6. 神秘常量!用0x077CB531计算末尾0的个数,32位数首位相连
  7. Dos简单命令
  8. JDBC小常识
  9. CUDA Pro Tip: Optimized Filtering with Warp-Aggregated Atomics
  10. JAVA中数值的表示