#include<iostream>
#include<cstring>
#include<vector>
using namespace std;
const int N=11;
int f[N][N][110];
int p;
void init()
{
for(int i=0;i<=9;i++) f[1][i][i%p]++;
for(int i=2;i<N;i++)
for(int j=0;j<=9;j++)
for(int m=0;m<p;m++)
for(int k=0;k<=9;k++)
f[i][j][m]+=f[i-1][k][((m-j)%p+p)%p];
}
int dp(int n)
{
if(!n) return 1;
vector<int>v;
while(n) v.push_back(n%10),n/=10;
int last=0,res=0;
for(int i=v.size()-1;i>=0;i--)
{
int x=v[i];
for(int j=0;j<x;j++)
res+=f[i+1][j][((-last)%p+p)%p];
last+=x;
if(!i&&last%p==0) res++;
}
return res;
}
int main()
{
int l,r;
while(cin>>l>>r>>p)
{
memset(f,0,sizeof f);
init();
cout<<dp(r)-dp(l-1)<<endl;
}
return 0;
}
数位dp 数位和
原创black_hole6 ©著作权
©著作权归作者所有:来自51CTO博客作者black_hole6的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Softmax和Sigmoid应用之——CLIP和SiGLIP
Softmax和Sigmoid函数在多模态图像嵌入模型中的运用。
损失函数 多模态 CLIP SigLIP AIGC的底层技术 -
数位DP~
数位DP的应用范围:在某个区间内,有多少个,满足一定的性质
算法 动态规划 c++ i++ 数据 -
poj 3252 数位dp (数位统计)
就
C++ 动态规划 数位统计 #include 排列组合 -
数位DP进阶
[HDU5564] Clarke and digits发现每一位转移都是一样的, 于是可以矩阵乘法, 把 f[Mod][pre] 压成 Mo
i++ #include #define -
数位dp详解
一类问题的描述是:给你一个数字区间,问你区间中满足条件的数的个数。比如
dp 数位 数位dp 状态转移 -
数位DP小结
如果以下错的地方,谢谢提出。1.HDU - 2089 不要62解题思路:这题的限制条件是不
#include #define i++ -
数位dp 模板
不能有49
#define i++ c++ #include