给出a,b,求出[a,b]中各位数字之和能整除原数的数的个数。1<=a<=b<=1e18.

注意到各位数字之和最大是153.考虑枚举这个东西。那么需要统计的是[0,a-1]和[0,b]内各位数字之和为x且能整除x的数字个数。

那么我们只需要数位dp一波即可。

令dp[pos][i][x]表示有pos位且数字之和为x的数mod P=i的数字个数。

则转移方程显然可得。

# include <cstdio>
# include <cstring>
# include <cstdlib>
# include <iostream>
# include <vector>
# include <queue>
# include <stack>
# include <map>
# include <set>
# include <cmath>
# include <algorithm>
using namespace std;
# define lowbit(x) ((x)&(-x))
# define pi acos(-1.0)
# define eps 1e-
# define MOD
# define INF
# define mem(a,b) memset(a,b,sizeof(a))
# define FOR(i,a,n) for(int i=a; i<=n; ++i)
# define FO(i,a,n) for(int i=a; i<n; ++i)
# define bug puts("H");
# define lch p<<,l,mid
# define rch p<<|,mid+,r
# define mp make_pair
# define pb push_back
typedef pair<int,int> PII;
typedef vector<int> VI;
# pragma comment(linker, "/STACK:1024000000,1024000000")
typedef long long LL;
int Scan() {
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
void Out(int a) {
if(a<) {putchar('-'); a=-a;}
if(a>=) Out(a/);
putchar(a%+'');
}
const int N=;
//Code begin... LL dp[][][], p[];
int wei[]; LL dfs(int pos, int mod, int limit, int x, int P){
if (x<) return ;
if (pos==) return mod==&&x==;
if (!limit&&~dp[pos][mod][x]) return dp[pos][mod][x];
int up=limit?wei[pos]:;
LL res=;
FOR(i,,up) res+=dfs(pos-,(mod+P-(i*p[pos-]%P))%P,limit&&i==wei[pos],x-i,P);
if (!limit) dp[pos][mod][x]=res;
return res;
}
LL sol(LL x){
int pos=;
while (x) wei[++pos]=x%, x/=;
LL res=;
int top=min(,pos*);
FOR(i,,top) mem(dp,-), res+=dfs(pos,,,i,i);
return res;
}
int main ()
{
LL a, b;
p[]=; FO(i,,) p[i]=p[i-]*;
scanf("%lld%lld",&a,&b);
printf("%lld\n",sol(b)-sol(a-));
return ;
}

最新文章

  1. 用于异步的BackgroundWorker
  2. maven异常
  3. 终端ls显示的配色方案
  4. CODEVS 1066/洛谷 P1514引水入城
  5. google base 之MessagePumpForUI
  6. MEF初体验之三:Exports声明
  7. javascript实现小鸟飞行轨迹
  8. 关于jsp中的文件下载
  9. (十一)延时执行、圆角(可实现圆形label)、代理设计模式
  10. WebService学习--(三)使用JDK开发WebService
  11. 在 Docker 容器中运行应用程序
  12. DirectX11--实现一个3D魔方(3)
  13. [LeetCode] 1. Two Sum 两数之和
  14. canvas-8clip.html
  15. 详解如何进行第三方App接入微信登录
  16. Dart- move html element
  17. (二)swagger-springmvc
  18. JavaScript 学习笔记(三)
  19. hibernate关联关系的crud之级联
  20. JDBC的概念、实现原理与连接数据库的几种方法

热门文章

  1. 20155315实验四 Android程序设计
  2. python3出现转码问题的总结
  3. day 13 字典dict 操作
  4. HBase 第四章 HBase原理
  5. Spring学习(三)-----Spring自动装配Beans
  6. hexo部署
  7. JavaScript的数组和字符串应用
  8. Python接口测试实战4(上) - 接口测试框架实战
  9. dubbo 微服务
  10. 3星|李开复《AI&#183;未来》:中国创业公司有独特优势,人工智能可能会加剧社会的不平等与不稳定