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 这题为 ...
随机推荐
- Ceph性能优化
几个 Ceph 性能优化的新方法和思路(2015 SH Ceph Day 参后感) 一周前,由 Intel 与 Redhat 在10月18日联合举办了 Shanghai Ceph Day.在这次会议上 ...
- WeTest功能优化第2期:云真机智能投屏,调试告别鼠标
第2期功能优化目录 [云真机视频映射]云真机画面本地映射[兼容性测试报告]新增问题机型聚类功能[新增Android9.0]同步上线最新安卓系统 本期介绍的云测产品功能优化,既有重磅级技术突破,也有报告 ...
- Entity Framework Core 选择数据表的外键
entityTypeBuilder .HasOne<GeraeteArt>() .WithMany(p => p.Geraete) .HasForeignKey(b => b. ...
- Adobe Photoshop CC2018最新教程+某宝店铺装修教程
PS免费教程,ps淘宝店铺装修教程.该资源为本人从某商网站重金买来,现免费分享给大家,下载地址:百度网盘,https://pan.baidu.com/s/127PjFbGwVVUVce1litHFsw
- List和Turple
List 格式:classmates = ['Michael', 'Bob', 'Tracy'] 读取list长度用:len(classmetes) 索引:索引正向从0开始,逆向从-1开始 在末尾增加 ...
- NGUI制作流光效果
效果展示: 技巧: 1.勾选UIPanel下的Normal启用UI的法线贴图,并建立带有法线贴图的UI对象(此处用NGUI自带的Reflector.Atlas中的图作为UI). 2.建立点光源并为其添 ...
- vector的基础使用
vector是一个容器,实现动态数组. 相似点:下标从0开始. 不同点:vector创建对象后,容器大小会随着元素的增多或减少而变化. 基础操作: 1.使用vector需要添加头文件,#include ...
- 【python 3.6】从网站抓图并存放到本地路径
#!/usr/bin/python # -*- coding: UTF-8 -*- _author_ = 'BH8ANK' import urllib.request import re import ...
- python常用命令—查看模块所在位置
环境:ipython3 交互式解释器 语法: import 模块名 模块名.__file__ 功能: 查看模块的所在位置 例:
- python函数学习之装饰器
装饰器 装饰器的本质是一个python函数,它的作用是在不对原函数做任何修改的同时,给函数添加一定的功能.装饰器的返回值也是一个函数对象. 分类: 1.不带参数的装饰器函数: def wrapper( ...