博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
P4127 [AHOI2009]同类分布
阅读量:5290 次
发布时间:2019-06-14

本文共 1100 字,大约阅读时间需要 3 分钟。

如有乱码,请

 

题目描述

给出两个数a,b,求出[a,b]中各位数字之和能整除原数的数的个数。

输入格式

一行,两个整数ab

输出格式

一个整数,表示答案

输入输出样例

输入 #1复制
10 19
输出 #1复制
3

说明/提示

对于所有的数据,1 ≤ a ≤ b ≤ 10^{18}1ab1018

 

 

#include
#include
#include
#include
#include
#include
using namespace std;long long dp[20][201][201],bit[21],a,b,MOD;long long dfs(int p,int sum,int mod,int limt){//数位dp模板,被我改了点小地方 if(p==0){ if(mod==0&&sum==MOD) return 1; else return 0;} int up=limt?bit[p]:9; if(!limt&&dp[p][sum][mod]!=-1)return dp[p][sum][mod]; long long ret=0; for(int i=0;i<=up;++i) ret+=dfs(p-1,sum+i,(mod*10+i)%MOD,limt&&up==i); if(!limt) dp[p][sum][mod]=ret;return ret;}long long solve(long long n){ int len=0,mod=0; while(n){mod+=n%10; bit[++len]=n%10;n/=10;} long long ret=0; for(MOD=1;MOD<=len*9;MOD++){//枚举 memset(dp,-1,sizeof(dp)); //这里必须清,当然,清成什么取决于你 ret+=dfs(len,0,0,1); } return ret;}int main(){ scanf("%lld%lld",&a,&b); printf("%lld",solve(b)-solve(a-1)); return 0;}

  

转载于:https://www.cnblogs.com/xiongchongwen/p/11249548.html

你可能感兴趣的文章
Codeforces 962 /2错误 相间位置排列 堆模拟 X轴距离最小值 前向星点双连通分量求只存在在一个简单环中的边...
查看>>
Matrix快速幂 模板
查看>>
laravel command调用方法命令
查看>>
20162302 - 20162319 结对编程项目-四则运算(第一周)
查看>>
用python2和python3伪装浏览器爬取网页
查看>>
MySQL开启远程连接权限
查看>>
tomcat7.0.27的bio,nio.apr高级运行模式
查看>>
SAP HANA 三大特点
查看>>
C#预处理器命令
查看>>
苹果手表:大方向和谷歌一样,硬件分道扬镳
查看>>
ccf 出现次数最多的数
查看>>
单例模式
查看>>
Competing Consumers Pattern (竞争消费者模式)
查看>>
HDUOJ ------1398
查看>>
cf--------(div1)1A. Theatre Square
查看>>
Android面试收集录15 Android Bitmap压缩策略
查看>>
Tomcat 报错的解决方法:The APR based Apache Tomcat Native library which allows optimal
查看>>
最长公共子串问题(LCS)
查看>>
TortoiseSVN is locked in another working copy
查看>>
PHP魔术方法之__call与__callStatic方法
查看>>