题意:求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数(这里的偶数位是的是从高位往低位数的偶数位)。a,b<10^2000,m≤2000,0≤d≤9 a,b<10^2000,m≤2000,0≤d≤9

题解:用f[i][j]表示有i+1位,第i位是d,且%m=j的数的个数。(这个状态可能有点奇怪,不过比较便于转移)然后转移方式还是惯用的方法,判一下如果原数的偶数位不是d或者奇数位是d则停止计算即可。

自主AC开心

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
typedef long long ll;
const int maxn=;
const ll mod=1e9+;
ll dp[maxn][maxn];
char a[maxn], b[maxn];
int wei[maxn], m, d; ll dfs(int pos, ll sum, bool limit, int len){
if(pos==-) return sum==;
if(!limit && dp[pos][sum]!=-) return dp[pos][sum]; ll ans=;
int up= limit ? wei[pos] : ;
for(int i=; i<=up; i++)
{
if((len-pos)%== && i!=d) continue;
if((len-pos)%== && i==d) continue;
ans=(ans%mod+dfs(pos-, (sum*+i)%m, limit&&(i==wei[pos]), len)%mod)%mod;
} return limit ? ans : dp[pos][sum]=ans;
} ll solve(char *s){
int len=strlen(s); for(int i=; i<len; i++)
{
wei[i]=s[len-i-]-'';
} return dfs(len-, , true, len);
} bool check(){
int len=strlen(a);
ll s=;
for(int i=; i<len; i++)
{
s=(s*+a[i]-'')%m;
if((i+)%== && a[i]-''!=d || (i+)%== && a[i]-''==d)
return false;
}
if(!s)
return true;
else
return false;
} int main(){
memset(dp, -, sizeof(dp)); scanf("%d%d", &m, &d);
scanf("%s%s", a, b); ll ans=solve(b)-solve(a); if(check()){//判断a是否合格
ans++;
}
ans=(ans+mod)%mod;
printf("%lld\n", ans);
return ;
}

CF628D Magic Numbers (数据大+数位dp)求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数的更多相关文章

  1. CodeForces 55D Beautiful numbers (SPOJ JZPEXT 数位DP)

    题意 求[X,Y]区间内能被其各位数(除0)均整除的数的个数. CF 55D 有些时候因为问题的一些"整体性"而导致在按位统计的过程中不能顺便计算出某些量,所以只能在枚举到最后一位 ...

  2. Travelling Salesman and Special Numbers CodeForces - 914C (数位dp)

    大意: 对于一个数$x$, 每次操作可将$x$变为$x$二进制中1的个数 定义经过k次操作变为1的数为好数, 求$[1,n]$中有多少个好数 注意到n二进制位最大1000位, 经过一次操作后一定变为1 ...

  3. 数位DP 求K进制下0~N的每个数每位上出现的数的总和

    好久没写博客了,因为感觉时间比较紧,另一方面没有心思,做的题目比较浅也是另一方面. 热身赛第二场被血虐了好不好,于是决定看看数位DP吧. 进入正题: 如题是一道经(简)典(单)的数位dp. 第一步,对 ...

  4. 2019.02.15 codechef Favourite Numbers(二分+数位dp+ac自动机)

    传送门 题意: 给444个整数L,R,K,nL,R,K,nL,R,K,n,和nnn个数字串,L,R,K,数字串大小≤1e18,n≤65L,R,K,数字串大小\le1e18,n\le65L,R,K,数字 ...

  5. 数位dp作业

    dp东西实在太多,昨天开了个树形dp入门,还没入呢,今天就要写数位dp,也不知道这种学习状态对不对啊? A - 不要62 题意: 输入n到m内,符合条件的数的个数.条件:不含62和4. 这里直接学习q ...

  6. Xorequ(BZOJ3329+数位DP+斐波那契数列)

    题目链接 传送门 思路 由\(a\bigoplus b=c\rightarrow a=c\bigoplus b\)得原式可化为\(x\bigoplus 2x=3x\). 又异或是不进位加法,且\(2x ...

  7. 【CF628D】Magic Numbers 数位DP

    [CF628D]Magic Numbers 题意:求[a,b]中,偶数位的数字都是d,其余为数字都不是d,且能被m整除的数的个数(这里的偶数位是的是从高位往低位数的偶数位).$a,b<10^{2 ...

  8. codeforces628D. Magic Numbers (数位dp)

    Consider the decimal presentation of an integer. Let's call a number d-magic if digit d appears in d ...

  9. Codeforces 914 C. Travelling Salesman and Special Numbers (数位DP)

    题目链接:Travelling Salesman and Special Numbers 题意: 给出一个二进制数n,每次操作可以将这个数变为其二进制数位上所有1的和(3->2 ; 7-> ...

随机推荐

  1. Django的serializers使用

    Serializer 在这里通过一个验证用户身份的例子说明rest_framework中serializer.Serializer的使用. 编写serializer Serializer的使用不需要依 ...

  2. python之特殊方法

    特殊方法的定义: 1.定义在某些class当中 2.不需要直接调用 3.Python的某些函数或者是操作符会调用相应的特殊方法 特殊方法很多,我们只需要编写用到的特殊方法,以及有关联性的特殊方法. — ...

  3. GET与POST方法

    HTTP中的GET,POST,PUT,DELETE对应着对这个资源的查,改,增,删4个操作.GET一般用于获取/查询资源信息,而POST一般用于更新资源信息. 1.根据HTTP规范,GET用于信息获取 ...

  4. JavaScript基础笔记集合(转)

    JavaScript基础笔记集合   JavaScript基础笔记集合   js简介 js是脚本语言.浏览器是逐行的读取代码,而传统编程会在执行前进行编译   js存放的位置 html脚本必须放在&l ...

  5. 存储前set方法相互关联 只关联了一方 分别set

    17:51:45,580 ERROR SqlExceptionHelper:129 - Column 'lkm_cust_id' cannot be nullorg.hibernate.excepti ...

  6. VMware内部错误解决办法

    虚拟机内部错误,不要担心不是致命错误,往往是由于你的配置被禁用了或者VMware运行权限不够导致 检查你的VMware虚拟网卡是否被禁用 检查你的VMware的运行权限,直接管理员运行就够够的了

  7. 算法Sedgewick第四版-第1章基础-010一检查括号是否成对出现

    /****************************************************************************** * Compilation: javac ...

  8. cf123E Maze

    传送门 分析 见ptx大爷的博客 代码 #include<iostream> #include<cstdio> #include<cstring> #include ...

  9. Mat的迭代器使用

    如果你熟悉 C++的 STL 库,那一定了解迭代器(iterator)的使用.迭代器可以方便地遍历所有元素.Mat 也增加了迭代器的支持,以便于矩阵元素的遍历.下面的例程功能跟上一节的例程类似,但是由 ...

  10. Entity Framework Tutorial Basics(10):Entity Lifecycle

    Entity Lifecycle: Before we work on CRUD operation (Create, Read, Update, Delete), it's important to ...