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 这题为 ...
随机推荐
- 基于Kafka的服务端用户行为日志采集
本文来自网易云社区 作者:李勇 背景 随着互联网的不断发展,用户所产生的行为数据被越来越多的网站重视,那么什么是用户行为呢?所谓的用户行为主要由五种元素组成:时间.地点.人物.行为.行为对应的内容.为 ...
- php session存入redis
php的会话默认以文件的形式存在,可以配知道NOSQL中,既可以提高访问速度又能好好的实现回话共享,在后期做负载均衡时实现多台服务器session 同步也是比较方便: 一:在php配置文件中改 修改p ...
- mongdb数据迁移导出与导入
导出: mongoexport --host localhost --port --username un1 --password pwd1 --db db1 --collection col1 -- ...
- Mate20兼容性如何?WeTest带你抢先测!
自从九月份 iPhone XS 系列发布后,WeTest团队迅速入库了iPhone XS和iPhone XR设备,十月份国内巨头华为也重磅推出了一款“Mate 20”设备,让下半年的国内手机市场又热闹 ...
- 「国庆训练」Bomb(HDU-5934)
题意 给定\(n\)个炸弹,每个炸弹的坐标与代价与影响范围给定,炸弹会引爆影响范围内其他所有炸弹.求引爆所有炸弹的最小代价. 分析 先做\(n^2\)的循环,然后建图,对\(i\)能引爆\(j\)建边 ...
- 简单的switch嵌套
//添加list数据 1 public static void main(String[] args) { List<String> al = new ArrayList<Strin ...
- 【WXS数据类型】Number
Number包括整数与小数. 属性: 名称 返回 说明 [Number].constructor 值为字符串“Number” 返回该类型的结构字符串 方法: 原型:[Number].toString( ...
- 交换学生 (Foreign Exchange,UVa10763)
题目描述: 解题思路: 开一个数组,读入一次交换两个数,如果最后数组不变,即符合匹配 #include<iostream> #include<cstdio> #include& ...
- [Clr via C#读书笔记]Cp3共享程序集和强命名程
Cp3共享程序集和强命名程序集 私有方式部署+全局方式部署:弱命名程序集+强命名程序集 强命名程序集使用发布者的公钥私钥进行签名,唯一标识发布者. 共享dll被全部复制到System32中 强命名程序 ...
- Intro to Probabilistic Model
概率论复习 概率(Probability) 频率学派(Frequentist):由大量试验得到的期望频率(致命缺陷:有些事情无法大量试验,例如一封邮件是垃圾邮件的概率,雷达探测的物体是一枚导弹的概率) ...