【题目链接】

点击打开链接

【算法】

数位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的更多相关文章

  1. 【HDU 3652】 B-number (数位DP)

    B-number Problem Description A wqb-number, or B-number for short, is a non-negative integer whose de ...

  2. 【HDU 4722】 Good Numbers

    [题目链接] 点击打开链接 [算法] f[i][j]表示第i位,数位和对10取模余j的数的个数 状态转移,计算答案都比较简单,笔者不再赘述 [代码] #include<bits/stdc++.h ...

  3. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  4. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  5. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  6. 【HDOJ 3652】B-number

    [HDOJ 3652]B-number 给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化! . 一入记忆化深似海. ..再也不想用递推了...发现真的非常好想 仅仅要保证满 ...

  7. 【HDU 2196】 Computer(树的直径)

    [HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...

  8. 【HDU 2196】 Computer (树形DP)

    [HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...

  9. 【HDU 5145】 NPY and girls(组合+莫队)

    pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...

随机推荐

  1. ArcGIS:Hello World Maps

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  2. SQL-如何使用 MongoDB和PyMongo。

    先决条件 在开始之前,请确保已经安装了 PyMongo 发行版. 在 Python shell 中,下面的代码应该在不引发异常的情况下运行: >>> import pymongo 假 ...

  3. MySQL操作示例

    """ MySQL综合练习作业 """ # 1.自行创建测试数据: # 创建数据库 """ create da ...

  4. python面向对象编程设计与开发

    一.什么是面向对象的程序设计 1.何为数据结构? 数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,如列表.字典. 2.何为编程? 编程是指程序员用特定的语法+数据结构+算法,组成的代码,告 ...

  5. layer弹层content写错导致div复制了一次,导致id失效 $().val() 获取不到dispaly:none div里表单的值

    ​ 错误之源: $("a.consult").click(function () {         lib_consult_html = $('#consult-html').h ...

  6. docsearch & algolia

    docsearch & algolia The easiest way to add search to your documentation. https://community.algol ...

  7. [ C语言 ] 迷宫 迷宫生成器 [ 递归与搜索 ]

    [原创]转载请注明出处 [浙江大学 程序设计专题] [地图求解器] 本题目要求输入一个迷宫地图,输出从起点到终点的路线. 基本思路是从起点(Sx,Sy)每次枚举该格子上下左右四个方向,直到走到终点(T ...

  8. mysql配置文件my.ini的修改问题

    修改innodb_buffer_pool_size这个参数一般都没问题,但是修改innodb_log_file_size这个参数如果过大,mysql日志就会提示: Error: log file .\ ...

  9. html自动换行

    对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥有默认的white-space:normal,当定义的宽度之后自动换行html css 1.(IE浏览器)连续的英文字符和阿拉伯数 ...

  10. MySQL架构优化实战系列4:SQL优化步骤与常用管理命令