题目链接[kuangbin带你飞]专题十五 数位DP G - B-number

题意

求1~n的范围里含有13且能被13整除的数字的个数。

思路

首先,了解这样一个式子:a%m == ((b%m)*c+d)%m;

式子的正确是显然的。就不证明了。

那么推断数能否够被13整除就能够分解为一位一位进行处理。

当然。我们也仅仅须要储存取余后的值。

dfs(len, num, mod, flag)

mod记录数字对13取余后的值

len表示当前位数

num==0 不含13且上一位不为1

pre==1 不含13且上一位为1

pre==2 含13

flag表示能否够随意取值(推断范围)。

如此,记忆化搜索就可以得解。

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <vector>

using namespace std;

#define LL long long
#define MOD 13
LL dp[20][3][13];
int dis[20];

LL dfs(int len, int type, int mod, bool flag)
{
if(len < 0)
return type == 2 && mod == 0;
if(!flag && dp[len][type][mod]!=-1)
return dp[len][type][mod];
int end = flag?

dis[len]:9;
int ans = 0;
for(int i=0; i<=end; i++)
{
if(type == 2 || (type == 1 && i == 3))
ans += dfs(len-1, 2, (mod*10+i)%MOD, flag&&i==end);
else
ans += dfs(len-1, i==1?1:0, (mod*10+i)%MOD, flag&&i==end);
}
if(!flag)
dp[len][type][mod] = ans;
return ans;
}

LL solve(LL n)
{
int len = 0;
while(n)
{
dis[len++] = n%10;
n /= 10;
}
return dfs(len-1, 0, 0, 1);
}

int main()
{
int n;
memset(dp, -1, sizeof(dp));

posted @
2017-06-20 08:10 
yangykaifa 
阅读(...) 
评论(...) 
编辑 
收藏

最新文章

  1. JavaScript获取浏览器高度和宽度值
  2. Jquery---用jQuery实现的智能隐藏、滑动效果的返回顶部代码
  3. 《Head First HTML&amp;CSS》笔记
  4. Android自动关机代码
  5. centos安装python gcc sqlite
  6. 49-Group Anagrams-(Medium) 题解
  7. 英特尔:不再公布PC处理器多核睿频数据
  8. IPFS: Merkle DAG数据结构
  9. HTTP协议与TCP/IP协议
  10. SQL运行优化收藏
  11. 在flask中使用swagger(flasgger使用方法及效果展示)
  12. OSC Source Code Innovation Salon(2018.10.20)
  13. SharePoint自定义程序页面部署 不用重启IIS
  14. oracle 、mysql、 sql server使用记录
  15. 程序员面试50题(1)—查找最小的k个元素[算法]
  16. 性能调优之MySQL篇二:MySQL配置文件My.ini配置文件优化
  17. C++进阶3.字节对齐 联合
  18. Qracle、Sql server 、mysql查询练习题
  19. 我的Java修养
  20. 在windows7 32ibt安装MongoDB数据库的方法及连接失败解决方案

热门文章

  1. CF16A Flag
  2. POJ 1107
  3. selenium的报错信息:selenium.common.exceptions.InvalidSelectorException: Message: invalid selector: Compound class names not permitted
  4. 【大话QT之十】实现FTP断点续传
  5. c++:数据类型的推断type_traits
  6. node12---mongodb
  7. m_Orchestrate learning system---十九、局部变量和块变量是什么
  8. Linux就该这么学 20181003(第四章Vim/shell/测试条件)
  9. Linux下安装ipython与jupyter
  10. 跨域调用接口——WebClient通过get和post请求api