传送门

题目大意

定义n-magic为从左往右,偶数位置均为n,奇数位置不为n的一类数。求出[a,b]内所有可被m整除的d-magic个数。

分析

显然是数位dp,我们用dp[i][j][k]表示考虑到第i位,小于还是等于范围,对m取模的余数为k的时候的个数,然后我们枚举所有满足情况的j(i为奇数则j不能为d,i为偶数则j只能为d)进行转移,转移为经典的数位dp转移。最后记得因为答案取模过所以可能在相减后变为负数因此要进行一下特殊处理。

代码

#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;
const int mod = 1e9+;
int d,M,dp[][][],a[],cnt,m[];
char s[];
int go(){
int i,j,k;
scanf("%s",s);
cnt=strlen(s);
m[]=;
for(i=;i<cnt;i++){
a[i+]=(s[i]-'');
m[i+]=(m[i]*+a[i+])%M;
}
memset(dp,,sizeof(dp));
dp[][][]=;
for(i=;i<=cnt;i++){
for(j=;j<=a[i];j++){
if((i&)&&j==d)continue;
if(!(i&)&&j!=d)continue;
k=m[i-];
int x=(k*+j)%M;
if(j==a[i])dp[i][][x]=(dp[i][][x]+dp[i-][][k])%mod;
else dp[i][][x]=(dp[i][][x]+dp[i-][][k])%mod;
}
for(j=;j<=;j++)
for(k=;k<M;k++){
if((i&)&&j==d)continue;
if(!(i&)&&j!=d)continue;
int x=(k*+j)%M;
dp[i][][x]=(dp[i][][x]+dp[i-][][k])%mod;
}
}
return (dp[cnt][][]+dp[cnt][][])%mod;
}
int ck(){
int ok=,sum=;
for(int i=;i<=cnt;i+=){
sum=((sum<<)+(sum<<)+a[i])%M;
if(a[i]==d)return ;
}
for(int i=;i<=cnt;i+=){
sum=((sum<<)+(sum<<)+a[i])%M;
if(a[i]!=d){
ok=;
break;
}
}
if(sum)ok=;
return ok;
}
int main(){
scanf("%d%d",&M,&d);
cout<<abs(go()-ck()-go()-mod)%mod<<endl;
return ;
}

最新文章

  1. 深入JVM-Class装载系统
  2. windows ftp 连接serv_U 管理员
  3. php接收到的json格式不标准,某个字段中的文本包含双引号的处理
  4. 奇葩问题之ToolBar返回键失效
  5. LUA闭包概念演示
  6. ASP.NET(C#)中的try catch异常处理机制
  7. Big Clock
  8. java 检查抛出的异常是否是要捕获的检查性异常或运行时异常或错误
  9. Linux下根据进程的名字杀死进程
  10. as3中去掉字符串两边的空格,换行符
  11. Flask01 初识flask、flask配置
  12. Spring的注解@Qualifier小结
  13. windows10不能修改hosts解决方案(亲测)
  14. zabbix 分布式zabbix_proxy
  15. Win7 VS2015环境使用qt-msvc2015-5.6.0
  16. 《Linux内核分析》第五周:分析system_call中断处理过程
  17. 在centos6.5下用nginx无法连接zabbix与mysql的解决办法
  18. 神、上帝以及老天爷--hdu2048(错排,递推)
  19. s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由用户控制。
  20. C Primer Plus note2

热门文章

  1. Codeforces Round #281 (Div. 2) A. Vasya and Football(模拟)
  2. 掌握sudo的使用
  3. UVA - 242 Stamps and Envelope Size (完全背包+bitset)
  4. C#进阶之路(四):拉姆达
  5. Codeforces 786C. Till I Collapse 主席树
  6. AfxExtractSubString 函数的相关问题
  7. JSP/java 执行创建批处理文件,并执行批处理事务。
  8. Spring Boot发布和调用RESTful web service
  9. [转] Linux 查找文件内容
  10. DCloud-wap2app:杂项