题目大意:求$[l,r]$中各位数之和能被该数整除的数的个数。$0\leq l\leq r\leq 10^{18}$。

------------------------

显然数位DP。

搜索时记录$pos$表示当前位置,$sum$表示各位数字之和,$st$表示原数,$limit$表示最高位限制。(如果有时间我会写一篇博客学习数位DP,希望不要咕咕

转移自然是$dfs(pos+1,sum+i,st*10+i)$

但是一看数据范围,肯定不能这么搜,不然内存会炸。这时我们不妨考虑取模

根据题目,我们发现:当$st\mod\ sum==0$的时候,该数是合法的。所以我们不妨枚举$mod$,当$st==0且sum==mod$时返回$1$。一共$18$位数,共$162$种状态。

代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int l,r,len,mod;
int a[],dp[][][];
inline int dfs(int pos,int sum,int st,int limit)//pos位置,sum各位数字和,st原数,limit最高位限制
{
if (pos>len&&sum==) return ;
if (pos>len) return st==&&sum==mod?:;
if (!limit&&dp[pos][sum][st]!=-) return dp[pos][sum][st];
int ret=,res=limit?a[len-pos+]:;
for (int i=;i<=res;i++)
ret+=dfs(pos+,sum+i,(10ll*st+i)%mod,i==res&&limit);
return limit?ret:dp[pos][sum][st]=ret;
}
inline int chai(int x)
{
len=;
while(x>){
a[++len]=x%;
x/=;
}
int res=;
for (mod=;mod<=*len;mod++)
{
memset(dp,-,sizeof(dp));
res+=dfs(,,,);
}
return res;
}
signed main()
{
scanf("%lld%lld",&l,&r);
printf("%lld",chai(r)-chai(l-));
return ;
}

【AHOI2009】同类分布 题解(数位DP)的更多相关文章

  1. [BZOJ1799][Ahoi2009]self 同类分布(数位dp)

    题目描述 给出两个数 a,ba,b ,求出 [a,b][a,b] 中各位数字之和能整除原数的数的个数. 输入输出格式 输入格式: 一行,两个整数 aa 和 bb 输出格式: 一个整数,表示答案 输入输 ...

  2. BZOJ 1799 - [AHOI2009]self 同类分布 - 枚举 数位DP

    Description 找出$[L, R]$ 区间内有多少数, 各位数字和 能整除原数 Solution 枚举每个可能的数字和, 进行数位DP即可 , 水爆 Code #include<cstd ...

  3. P4127 [AHOI2009]同类分布

    P4127 [AHOI2009]同类分布 题解 好的,敲上数位DP  DFS板子 记录一下填的各位数字之和 sum ,然后记录一下原数 yuan 最后判断一下  yuan%sum==0 不就好啦??? ...

  4. 【BZOJ1799】[AHOI2009]同类分布(动态规划)

    [BZOJ1799][AHOI2009]同类分布(动态规划) 题面 BZOJ 洛谷 题解 很容易想到数位\(dp\),然而数字和整除原数似乎不好记录.没关系,直接枚举数字和就好了,这样子就可以把整除原 ...

  5. 洛谷 P4127 [AHOI2009]同类分布 解题报告

    P4127 [AHOI2009]同类分布 题目描述 给出两个数\(a,b\),求出\([a,b]\)中各位数字之和能整除原数的数的个数. 说明 对于所有的数据,\(1 ≤ a ≤ b ≤ 10^{18 ...

  6. [BZOJ1799][AHOI2009]同类分布(数位DP)

    1799: [Ahoi2009]self 同类分布 Time Limit: 50 Sec  Memory Limit: 64 MBSubmit: 1635  Solved: 728[Submit][S ...

  7. [luogu4127 AHOI2009] 同类分布 (数位dp)

    传送门 Solution 裸数位dp,空间存不下只能枚举数字具体是什么 注意memset最好为-1,不要是0,有很多状态答案为0 Code //By Menteur_Hxy #include < ...

  8. 【数位DP】【P4127】[AHOI2009]同类分布

    Description 给出两个数 \(a,~b\) 求出 \([a~,b]\) 中各位数字之和能整除原数的数的个数. Limitations \(1 \leq a,~b \leq 10^{18}\) ...

  9. 【题解】AHOI2009同类分布

    好开心呀~果然只有不看题解做出来的题目才会真正的有一种骄傲与满足吧ヾ(๑╹◡╹)ノ" 实际上这题只要顺藤摸瓜就可以了.首先按照数位dp的套路,有两维想必是省不掉:1.当前dp到到的位数:2. ...

随机推荐

  1. POJO类中布尔类型为啥不让用isXxx命名

    源码面前,了无秘密 <阿里开发规范泰山版>(2020.04.22)-->编程规约-->(一) 命名风格-->第8条规定: [强制]POJO 类中的任何布尔类型的变量,都不 ...

  2. C#使用NPOI对Word文档进行导出操作的dll最新版2.5.1

    Npoi导出非模板 最近使用NPOI做了个导出Word文档的功能,因为之前都是导出Excel很方便(不用模板),所以导出Word也选用了Npoi(也没有用模板,

  3. 数据可视化之DAX篇(八) DAX学习:使用VAR定义变量

    https://zhuanlan.zhihu.com/p/64414205 前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法. ...

  4. 数据可视化之DAX篇(三) 认识DAX中的表函数和值函数

    https://zhuanlan.zhihu.com/p/64421003 学习 DAX 的过程中,会遇到各种坑,刚开始甚至无法写出一个正确的度量值,总是提示错误.其实很多原因都是不理解 DAX 函数 ...

  5. Docker基础使用

    Docker篇 CentOS 安装Docker - 菜鸟教程 安装须知: 1.Docker支持以下的CentOS版本: CentOS 7 (64-bit) CentOS 6.5 (64-bit) 或更 ...

  6. Java常用开源库

    Java的经久不衰,很大程度上得益于Java的生态好.在日常开发中,我们也会经常使用到各种开源库和工具类,为了避免重复造轮子,本文将贴出工作及学习中会用到的部分开源库和工具类.Java的生态实在太大, ...

  7. IOS上传图片方向问题

    在显示上传完毕的图片的时候遇到了一个问题, 图片莫名其妙被逆时针旋转了90度就很离谱 如下图 经过一番查询, 原来是 IOS 的相机拍照的时候会把方向角写入到图片里面 因为我用的是 element 的 ...

  8. [jvm] -- 监控和调优常用命令工具篇

    jps:java版本的ps,查看进程的信息 jps -l 输出jar包路径,类全名 jps -m 输出main参数 jps -v 输出JVM参数 jinfo:是用来查看JVM参数和动态修改部分JVM参 ...

  9. [redis] -- 集群篇

    三种集群方式 主从同步:主从复制模式中包含一个主数据库实例(master)与一个或多个从数据库实例(slave) 优点: master能自动将数据同步到slave,可以进行读写分离,分担master的 ...

  10. java 如何正确的输出集合或者对象的值

    java 如何正确的输出集合或者对象的值 一般out.println(Object) 和 System.out.println(Object),其中输出的都是Object.toString()方法.重 ...