【HDU 3652】 B-numbers
【题目链接】
【算法】
数位DP
f[i][j][k][l]表示i位数,第一位为j,除以13的余数为k,是/否包括子串“13”的方案数
当然,我们也可以先打表,然后,对于每次询问,二分即可
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXL 13 int i,n;
int a[MAXL],r[MAXL];
int f[MAXL][][][]; inline void dp()
{
int i,j,k,x,m;
for (i = ; i <= ; i++) f[][i][i][] = ;
for (i = ; i < MAXL; i++)
{
for (j = ; j <= ; j++)
{
for (k = ; k <= ; k++)
{
m = (r[i-] * j) % ;
for (x = ; x <= ; x++)
{
if (j == && x == ) continue;
f[i][j][k][] += f[i-][x][(k-m+)%][];
}
for (x = ; x <= ; x++)
{
f[i][j][k][] += f[i-][x][(k-m+)%][];
}
if (j == ) f[i][j][k][] += f[i-][][(k-m+)%][];
}
}
}
}
inline int calc(int n)
{
int i,j,len = ,ans = ,m = ,flag = false;
memset(a,,sizeof(a));
while (n)
{
a[++len] = n % ;
n /= ;
}
for (i = len; i >= ; i--)
{
if (flag)
{
for (j = ; j < a[i]; j++)
{
ans = ans + f[i][j][(-m)%][] + f[i][j][(-m)%][];
}
} else
{
for (j = ; j < a[i]; j++)
{
ans += f[i][j][(-m)%][];
}
if (a[i+] == && a[i] > ) ans += f[i][][(-m)%][];
}
m = (m + a[i] * r[i-]) % ;
if (a[i] == && a[i+] == ) flag = true;
}
return ans;
} int main()
{ r[] = ;
for (i = ; i < MAXL; i++) r[i] = (r[i-] * ) % ;
dp();
while (scanf("%d",&n) != EOF) printf("%d\n",calc(n+)); return ;
}
【HDU 3652】 B-numbers的更多相关文章
- 【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 4722】 Good Numbers
[题目链接] 点击打开链接 [算法] f[i][j]表示第i位,数位和对10取模余j的数的个数 状态转移,计算答案都比较简单,笔者不再赘述 [代码] #include<bits/stdc++.h ...
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDOJ 3652】B-number
[HDOJ 3652]B-number 给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化! . 一入记忆化深似海. ..再也不想用递推了...发现真的非常好想 仅仅要保证满 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
随机推荐
- Linux中搭建FTP服务器
FTP工作原理 (1)FTP使用端口 [root@localhost ~]# cat /etc/services | grep ftp ftp-data 20/tcp #数据链路:端口20 ftp 2 ...
- IDE简介
IDE(Integrated Development Environment) 集成开发环境 十种集成开发工具: 微软 Visual Studio (VS) NetNeans PyCharm Inte ...
- build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing
maven test项目时遇到一下错误 Some problems were encountered while building the effective model for cn.temptat ...
- 图论算法——最短路径Dijkstra,Floyd,Bellman Ford
算法名称 适用范围 算法过程 Dijkstra 无负权 从s开始,选择尚未完成的点中,distance最小的点,对其所有边进行松弛:直到所有结点都已完成 Bellman-Ford 可用有负权 依次对所 ...
- Python xml文件处理
什么是XML文件? xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. 从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,具体如 ...
- ZOJ 3910 Market
Market Time Limit: 2 Seconds Memory Limit: 65536 KB There's a fruit market in Byteland. The sal ...
- Codeforces Round #321 (Div. 2)-B. Kefa and Company,区间最大值!
->链接在此<- B. Kefa and Company time limit per test 2 seconds memory limit per test 256 megabytes ...
- String replaceAll-正则匹配-截取以指定字符开头,以指定字符结尾的字符串
scala代码块 截取以某个字符开头,以某个字符结尾的字符串 def main(args: Array[String]): Unit = { val s = "{{a61,a2,a3},{b ...
- 如何写Java文档注释(Java Doc Comments)
本文翻译自How to Write Doc Comments for the Javadoc Tool,但是精简了一些私以为不重要的东西 本文不讨论如何使用javadoc工具自动生成文档的方法,而是主 ...
- HDU 3537 Mock Turtles型翻硬币游戏
题目大意: 每次可以翻1个或者2个或者3个硬币,但要保证最右边的那个硬币是正面的,直到不能操作为输,这题目还有说因为主人公感情混乱可能描述不清会有重复的硬币说出,所以要去重 这是一个Mock Turt ...