HDU3652:B-number——题解
http://acm.hdu.edu.cn/showproblem.php?pid=3652
题目大意:给一个数n,求1~n所有满足下列条件的数的个数:
1.包含一个子串为“13”
2.能被13整除。
————————————————————
数位dp……然而不像各位大佬记忆化搜索的写法那样清真。
欢迎访问旁边友链的学姐来获取这个我抄的代码
设dp[i][j][k][0/1][0/1]表示第i位填j,现在该数被13除余数为k,无/有“13”,前i位小于等于/大于n的前i位。
然后推的方程……太长了,看代码吧。
虽然很长但是好理解不是吗……
#include<cstdio>
#include<cstring>
using namespace std;
int a[],b[],f[][][][][];
int dp(int x){
int len=;
while(x)a[++len]=x%,x/=;
if(len==)a[++len]=;
memset(f,,sizeof(f));
for(int i=;i<=;i++){
if(i<=a[])f[][i][i][][]=;
else f[][i][i][][]=;
}
for(int i=;i<=len;i++){
for(int j=;j<=;j++){
for(int k=;k<=;k++){
for(int l=;l<;l++){
bool t=;
if(j==&&k==)t=;
if(j<a[i])
if(t)
f[i][j][(l+j*b[i-])%][t][]+=f[i-][k][l][][]+f[i-][k][l][][]
+f[i-][k][l][][]+f[i-][k][l][][];
else{
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][]+f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][]+f[i-][k][l][][];
}
else if(j==a[i])
if(t){
f[i][j][(l+j*b[i-])%][t][]+=f[i-][k][l][][]+f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][t][]+=f[i-][k][l][][]+f[i-][k][l][][];
}
else{
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][];
}
else
if(t)
f[i][j][(l+j*b[i-])%][t][]+=f[i-][k][l][][]+f[i-][k][l][][]
+f[i-][k][l][][]+f[i-][k][l][][];
else{
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][]+f[i-][k][l][][];
f[i][j][(l+j*b[i-])%][][]+=f[i-][k][l][][]+f[i-][k][l][][];
}
}
}
}
}
int ans=;
for(int i=;i<=a[len];i++)ans+=f[len][i][][][];
for(int i=len-;i;i--){
for(int j=;j<=;j++){
ans+=f[i][j][][][]+f[i][j][][][];
}
}
return ans;
}
int main(){
b[]=;
for(int i=;i<=;i++)b[i]=b[i-]*%;
int n;
while(scanf("%d",&n)!=EOF&&n){
printf("%d\n",dp(n));
}
return ;
}
HDU3652:B-number——题解的更多相关文章
- C#版 - Leetcode 414. Third Maximum Number题解
版权声明: 本文为博主Bravo Yeung(知乎UserName同名)的原创文章,欲转载请先私信获博主允许,转载时请附上网址 http://blog.csdn.net/lzuacm. C#版 - L ...
- Problem 2. number题解
number:数学+二分图匹配 首先,如果S<N,那么S+1,S+2...N这些数直接放在S+1,S+2...N的位置上(如果其他数x放在这些位置上面,这些数不放在对应位置,那么x一定能放在这些 ...
- [LeetCode]Letter Combinations of a Phone Number题解
Letter Combinations of a Phone Number: Given a digit string, return all possible letter combinations ...
- CF1157B-Long Number题解
原题地址 题目大意:有一个\(n\)位数,其中的数字只有\(1\)~\(9\),不包括\(0\),每个\(1\)~\(9\)的数字有一个映射,映射也在\(1\)~\(9\)中,现在我们可以对这个\(n ...
- POJ2104:K-th Number——题解
http://poj.org/problem?id=2104 题目大意:求区间第k小. —————————————————————————— 主席树板子题. ……我看了半天现在还是一知半解的状态所以应 ...
- 2017 ACM/ICPC Asia Regional Shenyang Online E number number number 题解
分析: 当n=1时ans=4=f(5)-1; n=2,ans=12=f(7)-1; n=3,ans=33=f(9)-1; 于是大胆猜想ans=f(2*k+3)-1. 之后用矩阵快速幂求解f(n)即可, ...
- HDU3709 Balanced Number 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3709 题目大意: 求区间 \([x, y]\) 范围内"平衡数"的数量. 所谓平衡 ...
- HDU5179 beautiful number 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5179 题目大意: 给你一个数 \(A = a_1a_2 \cdots a_n\) ,我们称 \(A\) ...
- CF919B Perfect Number 题解
Content 给定一个数字 \(k\),求出第 \(k\) 小的各数位和为 \(10\) 的数. 数据范围:\(1\leqslant k\leqslant 10000\). Solution 这题为 ...
随机推荐
- Awesome Flask
Awesome Flask A curated list of awesome Flask resources and plugins Awesome Flask Framework Admin i ...
- hdu1969Pie(根据体积二分,分馅饼)
Pie Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- Linux命令应用大词典-第6章 文件处理
6.1 sort:对文件中的数据进行排序 6.2 uniq:将重复行从输出文件中删除 6.3 cut:从文件每行中输出选定的字节.字符或字段 6.4 comm:逐行比较两个已经排序的文件 6.5 di ...
- Java开发工程师(Web方向) - 02.Servlet技术 - 第1章.Servlet
第1章--Servlet Servlet简介 Servlet应用于? 浏览器发出HTTP请求,服务器接收请求后返回响应给浏览器. 接收请求后到返回响应之间: 服务器将请求对象转交给Servlet容器 ...
- LabVIEW初篇---前言
最早接触labview,是研二的时候,2007年,当时为了补贴家用,改善生活.自己拿着本科毕业证去找工作,去一个企业面试,当时,面试的主考官,问了会什么吗,比如PLC.单片机啥的?那时候的自己,基本上 ...
- 8月leetcode刷题总结
刷题链接:https://leetcode-cn.com/explore/ 根据leetcode的探索栏目,八月份一直在上面进行刷题.发现算法题真的好难,真-计算机思维. 核心是将现实问题转化为计算机 ...
- “Hello world!”团队—选题展示
本次选题展示内容: 一.视频展示 链接:http://v.youku.com/v_show/id_XMzA5Mzk5NjYwOA==.html?sharefrom=iphone 视频截图链接:http ...
- iOS- 用MapKit和CoreLocation 来实现移动设备(地图与定位)
1.前言 发现在很多的社交软件都引入了地图和定位功能,如果我们要想实现这两大功能,需要利用到两个框架:MapKit和CoreLocation 我们先来看看CoreLocation框架: 它可以 ...
- TCP系列24—重传—14、F-RTO虚假重传探测
一.虚假重传 在一些情况下,TCP可能会在没有数据丢失的情况下初始化一个重传,这种重传就叫做虚假重传(Spurious retransmission).发生虚假重传的原因可能是包传输中重排序.传输中发 ...
- SVM之问题形式化
>>>SVM之问题形式化 SVM之对偶问题 SVM之核函数 SVM之解决线性不可分 写在SVM之前——凸优化与对偶问题 SVM内容繁多,打算用五篇文章来记述.SVM之问题形式化描述给 ...