【题目链接】

点击打开链接

【算法】

数位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. ubuntu 安装 navicat

    下载navicat解压到opt目录 创建桌面快捷方式sudo vim /usr/share/applications/navicat.desktop [Desktop Entry] Encoding= ...

  2. noip模拟赛 Nephren Ruq Insania

    题目背景 大样例下发链接: https://pan.baidu.com/s/1nuVpRS1 密码: sfxg 注意:本题大样例4的输出文件修改为 https://pan.baidu.com/s/1b ...

  3. android 实现照相功能 照片存放在SID卡中,将照片显示在Image中

    protected static final int CAMERA_RESULT = 0; private String fileName; private Button takePhotoBn; p ...

  4. Linux下汇编语言学习笔记34 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  5. 【进击后端】linux安装最新版nodejs

    nodejs下载:https://nodejs.org/zh-cn/download/ 1.cd /root/download 2.wget https://nodejs.org/dist/v6.11 ...

  6. LENOVO System x3850 X6

    http://appserver.lenovo.com.cn/Lenovo_Series_List.aspx?CategoryCode=A31B01

  7. 使用URL Rewrite实现网站伪静态

    下载urlwrite包 将urlrewrite-***.jar复制到web应用lib文件夹下 web.xml中配置URL Rewrite: 例: <filter> <filter-n ...

  8. 合并链表 —— 剑指Offer

    题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则.     思路: 也在考虑能不能更优雅的代码写法,但是最后,还是两边都写一下,能增加代码清晰度. ...

  9. Django打造大型企业官网(八)

    4.16.侧边栏标题和广告位布局完成 templates/news/index.html <div class="sidebar-wrapper"> <div c ...

  10. 1.1 Spring概述

        Spring是分层的Java SE/EE应用一站式的轻量开源框架,以 反转控制(Inverse of Control,IoC).面向切面编程(Aspect Oriented Programmi ...