B-number HDU - 3652
题意:
找出区间[li,ri]有多少个符合要求的数:
1、这个数里面有13
2、这个数可以被13整除
题解:
这个题目和之前的有点不一样就是这个题目要我们求包含13的(之前做过的都是不包含)。但是都差不多了,顶多就是状态开大一点就可以了
1、如果它前面已经有13了,那么状态就是2
2、如果前面没有13,且它的上一位是1,那么它的状态就是1
3、如果前面没有13,且它的上一位不是1,那么状态就是0
至于状态之间的转换就看代码吧!
然后就是还要被13取余,取余运算符是很浪费时间的,那么我们可以采用秦九韶取余
(a+b)%mod=((a%mod)+(b%mod))%mod
(a*b)%mod=((a%mod)*(b%mod))%mod
那么12%mod=((1%mod)*10+2)%mod
dp方程:
dp[x][y][z]表示:在枚举第x位,它的状态为y(这个状态就是包含13那个),递归取余的结果是z
代码:
1 #include<stdio.h>
2 #include<string.h>
3 #include<algorithm>
4 #include<iostream>
5 using namespace std;
6 const int maxn=25;
7 typedef long long ll;
8 ll v[maxn],dp[maxn][3][15],ci;
9 ll dfs(ll pos,bool limit,ll is,ll mod)
10 {
11 if(pos==-1)
12 {
13 if(is==2 && mod==0)
14 {
15 return 1;
16 }
17 return 0;
18 }
19 ll tmp=0;
20 if(!limit && dp[pos][is][mod]!=-1) return dp[pos][is][mod];
21 ll up=limit?v[pos]:9;
22 for(ll i=0; i<=up; ++i)
23 {
24 //取余时候秦九韶算法
25 ll nmod = (mod*10+i)%13;
26 ll nstatus = is; // 有点else s = statu 的意思
27 //没想到它的状态有三个,我只考虑到了高位有13和没有13.但是还要考虑他的上一位是不是1
28 //这一点一定要考虑,大家可以想一想
29 if(is==0 && i==1)//高位不含13,并且末尾不是1,现在末尾添1返回1状态
30 nstatus = 1;
31 else if(is==1 && i!=1 && i!=3)//高位不含13,且末尾是1,现在末尾添加的不是1返回0状态
32 nstatus = 0;
33 else if(is==1 && i==3)//高位不含13,且末尾是1,现在末尾添加3返回2状态
34 nstatus = 2;
35 tmp+=dfs(pos-1,limit && i==v[pos],nstatus,nmod);
36 }
37 if(!limit) dp[pos][is][mod]=tmp;
38 //只有上界为9的时候才会往dp数组里面存,因为这样能节省更多的时间
39 return tmp;
40 }
41 ll solve(ll sum)
42 {
43 ll pos=0;
44 while(sum)
45 {
46 v[pos++]=sum%10;
47 sum/=10;
48 }
49 ci=pos;
50 return dfs(pos-1,1,0,0);
51 }
52 int main()
53 {
54 ll n;
55 memset(dp,-1,sizeof(dp));
56 while(~scanf("%I64d",&n))
57 {
58
59 printf("%I64d\n",solve(n));
60 }
61 return 0;
62 }
B-number HDU - 3652的更多相关文章
- 数位DP入门之hdu 3652 B-number
hdu 3652 B-number Problem Description A wqb-number, or B-number for short, is a non-negative integer ...
- 【HDU 3652】 B-number (数位DP)
B-number Problem Description A wqb-number, or B-number for short, is a non-negative integer whose de ...
- Hdu 3652 B-number (同余数位DP)
题目链接: Hdu 3652 B-number 题目描述: 给出一个数n,问 [1, n]区间内有几个数能被13整除并且还有13这个子串? 解题思路: 能整除的数位DP,确定好状态随便搞搞就能过了.d ...
- hdu 3652 【数位dp】
hdu 3652 题意:求1到n中包含'13'('13'不一定连续)且能被13整除的数的个数. 这是我第一道比较了能看懂的数位dp.定义状态dp[pos][res][sta]表示处理到第pos位,模的 ...
- 线段树 逆序对 Minimum Inversion Number HDU - 1394 Laptop
Minimum Inversion Number HDU - 1394 求最小反转数,就是求最少的逆序对. 逆序对怎么求,就是先把所有的数都初始化为0,然后按照顺序放入数字,放入数字前查询从这个数往后 ...
- HDU 3652:B-number(数位DP)
http://acm.hdu.edu.cn/showproblem.php?pid=3652 题意:求数位含有13和可以被13整除的数字个数. 思路:记录3种状态: st == 0 表示 从最高位到第 ...
- hdu 3652 B-number(数字dp)
http://acm.hdu.edu.cn/showproblem.php? pid=3652 大致题意:"B-number"即一个整数含有子串"13"且被13 ...
- BestCoder13 1001.Beautiful Palindrome Number(hdu 5062) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5062 题目意思:给出 N,找出 1 - 10^N 中满足 Beautiful Palindrome N ...
- Minimum Inversion Number~hdu 1394
The inversion number of a given number sequence a1, a2, ..., an is the number of pairs (ai, aj) that ...
- HDU - 3652 数位DP 套路题
题意:统计能被13整除和含有13的数的个数 解法没法好说的..学了前面两道直接啪出来了 PS.HDU深夜日常维护,没法交题,拿网上的代码随便对拍一下,输出一致 #include<bits/std ...
随机推荐
- python模块详解 | filecmp
简介: filecmp是python内置的一个模块,用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单 两个主要的方法: filecmp.cmp(f1, f2[, shallow]) 比较 ...
- Session、Cookie与Token
http协议是无状态协议 协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到 ...
- 【计算机基础】常用的快捷键和DOS命令
常用的快捷键和DOS命令 DOS命令 使用Linux比较酷 cool
- Oracle Rac to Rac One Node
=~=~=~=~=~=~=~=~=~=~=~= PuTTY log 2020.01.14 20:05:12 =~=~=~=~=~=~=~=~=~=~=~= [oracle@rac01 ~]$ srvc ...
- 视频画面中实现人脸遮挡教程 - 基于 TensorFlow 实现
在进行视频通话时,我们往往需要对画面进行一些实时分析,例如识别画面里的人.车.动物等等.这节里我们将使用时信魔方的人脸监视模块实现人脸被手部遮挡的检测,如下图所示效果: 预备知识 时信魔方的客户端使用 ...
- sap alv grid 中的delete按键问题
今天发先一个问题,在使用ALV输出的时候,如果有字段设置为可编辑状态,则会在前面出现选择条,并且,当我们选择一行或者多行的时候,可以用键盘上的DELETE键将行删除!呵呵
- SpringBoot快速掌握(1):核心技术
SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBoot快速掌握(1):核心技术 SpringBo ...
- LiteOS调测利器:backtrace函数原理知多少
摘要:本文将会和读者分享LiteOS 5.0版本中Cortex-M架构的backtrace软件原理及实现,供大家参考和学习交流. 原理介绍 汇编指令的执行流程 图 1 汇编指令的执行顺序 上图1所示, ...
- connection-backoff ConnectionBackoff Strategy 回退
grpc/connection-backoff.md at master · grpc/grpc https://github.com/grpc/grpc/blob/master/doc/connec ...
- WebSocket TCP HTTP
RFC 6455 - The WebSocket Protocol https://tools.ietf.org/html/rfc6455 1.5. Design Philosophy _This s ...