[luogu3413]萌数

luogu

考虑数位dp

怎么判断一个数是不是萌数?

只要知道其中某一位和它的前一位相等或者和前一位的前一位相等,那么它就是一个萌数

什么样的数不是萌数?

对于它的每一位都有\(w_i\neq w_{i-1}\)和\(w_i\neq w_{i-2}\)

记f[a][b][i]表示前一位是b,b的前一位是a,当前是第i位的萌数个数

其他的套模板做就好

#include<bits/stdc++.h>
using namespace std;
const int _=1005,mod=1e9+7;
int re(){
int x=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*w;
}
char w[_];
int ans,len,L,R,f[11][11][_];
void add(int&x,int y){x=(x+y)%mod;}
bool check(){//不想写高精所以单独check一下左端点
for(int i=2;i<=len;i++)
if(w[i]==w[i-1]||w[i]==w[i-2])return 0;
return 1;
}
int dfs(int p,int t1,int t2,bool lim,bool zero){
if(p==len+1)return 1;
if(!lim&&!zero&&f[t1][t2][p]!=-1)return f[t1][t2][p];
int up=lim?w[p]-'0':9,res=0;
for(int i=0;i<=up;i++){
if(i==t1||i==t2)continue;
if(zero&&!i)add(res,dfs(p+1,10,10,lim&&(i==up),1));
else add(res,dfs(p+1,t2,i,lim&&(i==up),0));
}
return (!lim&&!zero)?f[t1][t2][p]=res:res;
}
int main(){
memset(f,-1,sizeof(f));
scanf("%s",w+1);len=strlen(w+1);
for(int i=1;i<=len;i++)L=(1ll*L*10%mod+w[i]-'0')%mod;
if(check())ans=mod-1;
add(ans,dfs(1,10,10,1,1));
memset(f,-1,sizeof(f));
scanf("%s",w+1);len=strlen(w+1);
for(int i=1;i<=len;i++)R=(1ll*R*10%mod+w[i]-'0')%mod;
ans=(dfs(1,10,10,1,1)-ans+mod)%mod;
printf("%lld\n",(1ll*R-L+1+mod-ans+mod)%mod);
return 0;
}

最新文章

  1. 如何实现VoIP中大并发应用
  2. 各种同步方法性能比较(synchronized,ReentrantLock,Atomic)
  3. 第13章 .NET应用程序配置
  4. 1029 C语言文法
  5. 如何提高android串口kernel log等级
  6. 嵌入式应用中CGI编程中POST、GET及环境变量详解
  7. java常量池概念
  8. Linux shell日常命令和技巧
  9. Servlet之ServletContext以及文件操作
  10. Javascript--cookie创建与查看
  11. 关于AJAX异步请求
  12. cocos creator主程入门教程(二)—— 弹窗管理
  13. POJ-2236.WireleseNetwork.(并查集)
  14. Python中的注释和解注释
  15. ffmpeg的各种黑科技
  16. python答题辅助
  17. C#对接JAVA系统遇到的AES加密坑
  18. router使用以及vue的动画效果
  19. Linux命令(二十五) 磁盘管理命令(三) fdisk
  20. (转)Unity3D研究院之IOS&amp;Android收集Log文件

热门文章

  1. Unity载入和内存管理机制
  2. EffectiveJava(5)避免创建不必要的对象
  3. 简单的图片处理servlet
  4. 如何用PS快速的批量制作连续号码数字编号图解
  5. Hbase 认识及其作用
  6. 聚类分析算法及SAS实现
  7. 点击tablecell中的一个按钮,确定cell所在的行
  8. 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM
  9. CSS 选择器 :last-child与:last-of-type的区别
  10. VB中的排序问题 15个