Description

给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次。

Input

输入文件中仅包含一行两个整数a、b,含义如上所述。

Output

输出文件中包含一行10个整数,分别表示0-9在[a,b]中出现了多少次。

Sample Input

1 99

Sample Output

9 20 20 20 20 20 20 20 20 20

HINT

30%的数据中,a<=b<=10^6;
100%的数据中,a<=b<=10^12。

Source

Day1


这种裸的数位Dp只有我这蒟蒻不会做吧...

设f[i][j][k]为长度为i, 开头为j, k这个数字出现的次数。

然后就不会了。


#include <iostream>
#include <cstdio>
using namespace std; typedef long long ll;
struct date
{
ll num[];
friend date operator + (date a, date b)
{
date t;
for (int i = ; i <= ; i ++) t.num[i] = b.num[i] + a.num[i];
return t;
}
}f[][];
ll a, b, t[];
date cal(ll x)
{
date ans;
for (int i = ; i <= ; i ++) ans.num[i] = ;
if(!x){ans.num[]=;return ans;}
int len = ;
while(t[len] > x) len--;
for (int i = ; i < len ; i ++)
for (int j = ; j <= ; j ++)
ans = ans + f[i][j];
ans.num[]++;
int lim = x / t[len];
for (int i = ; i < lim ; i ++) ans = ans + f[len][i];
x %= t[len];
ans.num[lim] += x + ;
for (int i = len - ; i ; i --)
{
lim = x / t[i];
for (int j = ; j < lim ; j ++) ans = ans + f[i][j];
x %= t[i];
ans.num[lim] += x + ;
}
return ans;
} int main()
{
t[] = ;for (int i = ; i <= ; i ++) t[i] = t[i-] * ;
for (int i = ; i <= ; i ++) f[][i].num[i] = ;
for (int i = ; i <= ; i ++)
{
for (int x = ; x <= ; x ++)
{
for (int y = ; y <= ; y ++)
{
f[i][y] = f[i][y] + f[i-][x];
f[i][y].num[y] += t[i-];
}
}
}
scanf("%lld%lld", &a, &b);
date t1 = cal(a-), t2 = cal(b);
for (int i = ; i <= ; i ++) printf("%lld ",t2.num[i] - t1.num[i]);
printf("%lld", t2.num[] - t1.num[]);
return ;
}

[BZOJ1833][ZJOI2010]数字计数的更多相关文章

  1. [bzoj1833][ZJOI2010]数字计数(数位DP)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1833 分析:简单的数位DP f[i][j][k]表示在i位数.最高位j的所有数字中k的 ...

  2. 【洛谷】2602: [ZJOI2010]数字计数【数位DP】

    P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a ...

  3. P2602 [ZJOI2010]数字计数(递推)

    P2602 [ZJOI2010]数字计数 思路: 首先考虑含有前导0的情况,可以发现在相同的\(i\)位数中,每个数的出现次数都是相等的.所以我们可以设\(f(i)\)为\(i\)位数每个数的出现次数 ...

  4. P2602 [ZJOI2010]数字计数&P1239 计数器&P4999 烦人的数学作业

    P2602 [ZJOI2010]数字计数 题解 DFS 恶心的数位DP 对于这道题,我们可以一个数字一个数字的求 也就是分别统计区间 [ L , R ] 内部数字 i 出现的次数 (0<=i&l ...

  5. 数位dp详解&&LG P2602 [ZJOI2010]数字计数

    数位dp,适用于解决一类求x~y之间有多少个符合要求的数或者其他. 例题 题目描述 杭州交通管理局经常会扩充一些的士车牌照,新近出来一个好消息,以后上牌照,不再含有不吉利的数字了,这样一来,就可以消除 ...

  6. 洛谷P2602 [ZJOI2010]数字计数 题解 数位DP

    题目链接:https://www.luogu.com.cn/problem/P2602 题目大意: 计算区间 \([L,R]\) 范围内 \(0 \sim 9\) 各出现了多少次? 解题思路: 使用 ...

  7. UVA.1640.The Counting Problem / BZOJ.1833.[ZJOI2010]数字计数(数位DP)

    题目链接 \(Description\) 求\([l,r]\)中\(0,1,\cdots,9\)每个数字出现的次数(十进制表示). \(Solution\) 对每位分别DP.注意考虑前导0: 在最后统 ...

  8. 洛谷P2602 [ZJOI2010]数字计数(数位dp)

    数字计数 题目传送门 解题思路 用\(dp[i][j][k]\)来表示长度为\(i\)且以\(j\)为开头的数里\(k\)出现的次数. 则转移方程式为:\(dp[i][j][k] += \sum_{t ...

  9. BZOJ1833或洛谷2602 [ZJOI2010]数字计数

    BZOJ原题链接 洛谷原题链接 又是套记搜模板的时候.. 对\(0\sim 9\)单独统计. 定义\(f[pos][sum]\),即枚举到第\(pos\)位,前面枚举的所有位上是当前要统计的数的个数之 ...

随机推荐

  1. WInform中实现设置ZedGraph中曲线的X轴与Y轴的上限与下限

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  2. ACM团队周赛题解(3)

    940和822两套div.2 老规矩 #define MAXN 1000000+5#define MOD 1000000007#define PI (acos(-1.0))#define EPS 1e ...

  3. 初识数据库(MySql)

    一.简介 1.MySql是关系型数据库. 2.是一种开放源码软件, 3.是一种关联数据库管理系统. 4.服务器工作于客户端/服务端模式之下,或者是嵌入系统中. 数据库管理软件分类: 分两大类: 关系型 ...

  4. 控制执行流程之switch语句

    switch语句,同时也是一种选择性语句,其根据整数表达式的值(整数选择因子)选择一段代码去执行.整数选择因子为int类型或者char类型.

  5. 使用Spreadsheet导出表格时,设置样式

    $spreadsheet = new Spreadsheet();// 初始化         $spreadsheet->createSheet();// 添加一个sheet          ...

  6. java架构之路-(mysql底层原理)Mysql之让我们再深撸一次mysql

    让我再深撸一次mysql吧,这次主要以应对面试来说说mysql,大概几个方向,索引结构,查询引擎,索引优化,explain的详解和trace工具的使用. 索引: 我们先来看一下mysql的B+tree ...

  7. VM虚拟机,如何放大虚拟机屏幕,如何导出虚拟机ovf

    放大屏幕:,第一打开虚拟机,第二在需要放大的虚拟机上安装VMware tools   第三步查看>自动调节大小>自适应客户机.这样就可以放大屏幕了. 没有放大的屏幕 找到安装VMware  ...

  8. Ubuntu server16.04安装配置驱动418.87、cuda10.1、cudnn7.6.4.38、anaconda、pytorch超详细解决

    目录 安装GCC 安装NVIDIA驱动 1. 卸载原有驱动(没装跳过) 2. 禁用nouveau 3. 安装NVIDIA显卡驱动 安装CUDA10.1 安装cudnn 安装anaconda 安装ten ...

  9. Spring boot 梳理 - 全局配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下。

    全局配置文件application.properties或者是application.yml,在resources目录下或者类路径下的/config下,一般我们放到resources下.

  10. Java初中级面试笔记及对应视频讲解

    笔试题链接:点击打开链接   密码:提取码:7h9e 视频下载链接: 点击打开链接  提取码:hyye 百万it课程 https://pan.baidu.com/s/1ldJ_Ak7y0VL5Xmy9 ...