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 这题为 ...
随机推荐
- C#中创建二维数组,使用[][]和[,]的区别
C#中,我们在创建二维数组的时候,一般使用arr[][]的形式,例如 int[][] aInt = new int[2][]; 但声明二维数组还有一种方法,是使用arr[,]的形式.两者有什么区别呢? ...
- libevent学习二(Working with an event loop)
Runing the loop #define EVLOOP_ONCE 0x01 #define EVLOOP_NONBLOCK 0x02 #define EV ...
- yield学习
如果要控制内存占用,最好不要用list来保存中间结果,而是通过iterable对象(range, xrange, generator等)来迭代. yield 使函数变为generator,返回对象 ...
- 2019年1月23日,好像是这个日子,RF发布了 1.7.3.1 支持python3.6以上了,安装成功。
安装步骤:(win10 家庭版 64) 1.安装Python3.7.2,记得勾选添加Path 2.pip install robotframework 3.pip install wxPython 4 ...
- python 终极篇 ---django 认证
Django自带的用户认证 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能,这还真是个麻烦的事情呢. Djang ...
- python作业:三级菜单(第一周)
一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二.三级菜单 ...
- HADOOP docker(五):hadoop用户代理 Proxy user
1.hadoop用户代理简介2.配置3.实验 1.hadoop用户代理简介 hadoop用户代理功能的作用是让超级用户superuser模拟一个普通用户来执行任务.比如用户joe通过oozie提交一个 ...
- canvas学习(一):线条,图像变换和状态保存
canvas学习(一):线条,图像变换和状态保存 一:绘制一条线段: var canvas = document.getElementById('canvas') var ctx = canvas.g ...
- 软件工程 part4 评价3作品 修改
作品1 抢答器 地址: https://modao.cc/app/ylGTXobcMU7ePNi6tY53gG4iraLl0md评价: 老师有意见,我重新评价,这个作品是我测试最方便的,地址点进去直接 ...
- 解决chrome css本地映射不成功&&附带映射方法
解决办法:把本地文件夹名改成英文的(不要有中文) 顺便写一下怎么把在chrome调试的本地项目中的css映射到本地: 1.F12(option+command+i)启动chrome调试工具 2.打开s ...