TZOJ 2478 How many 0's?(数位DP)
描述
A Benedict monk No.16 writes down the decimal representations of all natural numbers between and including m and n, m ≤ n. How many 0's will he write down?
输入
Input consists of a sequence of lines. Each line contains two unsigned 32-bit integers m and n, m ≤ n. The last line of input has the value of mnegative and this line should not be processed.
输出
For each line of input print one line of output with one integer number giving the number of 0's written down by the monk.
样例输入
10 11
100 200
0 500
1234567890 2345678901
0 4294967295
-1 -1
样例输出
1
22
92
987654304
3825876150
题意
求[l,r]之间0的个数。
题解
数位DP。
[l,r]转化后变成[0,r]-[0,l-1]。
由于从0开始不好处理,可以变成从1开始,然后特判一下0。
考虑每一位数的贡献,比如1234,固定第3位为0的贡献:
1.0为头,00,01,02,03,04,前导0不考虑(除0外的数要考虑这个情况)。
2.0为尾,贡献就是12*10^1=120,意思就是0前面共有1-12(12个数),0后面有0-9(10个数)。
代码中注释的是求0-9的个数。
代码
#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll a[],b[],l,r;
void dp(ll t,ll *c,ll d)
{
ll n=t/,m=t%,temp=n;
//for(int i=1;i<=m;i++)c[i]+=d;
//for(int i=0;i<=9;i++)c[i]+=d*n;
c[]+=d*n;
while(temp)
{
c[temp%]+=(m+)*d;
temp/=;
}
if(n)dp(n-,c,d*);
} int main()
{
while(scanf("%lld%lld",&l,&r)!=EOF)
{
if(l==-&&r==-)break;
memset(a,,sizeof(a));
memset(b,,sizeof(b));
dp(l-,a,);
dp(r,b,);
if(l==)b[]++;
printf("%lld\n",b[]-a[]);
}
return ;
}
TZOJ 2478 How many 0's?(数位DP)的更多相关文章
- POJ 3286 How many 0's?(数位DP)
题目链接 终于过了,边界让我wa了好几次,猥琐的用AC代码对拍,很无奈,用非常麻烦的方法.写一下,估计以后再碰到,肯定看不懂这是写的什么了. 以前做过,统计1和2的,统计0比1和2麻烦多了,有前导0的 ...
- hdu_2089(数位dp)
hdu_2089(数位dp) 标签: dp 我初次接触数位dp表面上看上去挺简单,但是仔细学还是要考虑很多细节的.wa了无数次,这里引入一个 很好地博客 #include<cstdio> ...
- 【hdu4507】吉哥系列故事——恨7不成妻 数位dp
题目描述 求 $[L,R]$ 内满足:数位中不包含7.数位之和不是7的倍数.本身不是7的倍数 的所有数的平方和 mod $10^9+7$ . 输入 输入数据的第一行是case数T(1 <= T ...
- 数位DP 详解
序 天堂在左,战士向右 引言 数位DP在竞赛中的出现几率极低,但是如果不会数位DP,一旦考到就只能暴力骗分. 以下是数位DP详解,涉及到的例题有: [HDU2089]不要62 [HDU3652]B-n ...
- 数位DP 求K进制下0~N的每个数每位上出现的数的总和
好久没写博客了,因为感觉时间比较紧,另一方面没有心思,做的题目比较浅也是另一方面. 热身赛第二场被血虐了好不好,于是决定看看数位DP吧. 进入正题: 如题是一道经(简)典(单)的数位dp. 第一步,对 ...
- leetcode 902 数位dp 不包含0
复习了一下数位dp 肯定不包含0,但是通常数位dp最后计算的结果较小的是包含前导0的,只是没显示出来而已,所以这题需要前导0,但是非前导0是不需要算进去的,因此,加个是否是前导0的状态即可 class ...
- POJ 3286 How many 0's(数位DP模板)
题目链接:http://poj.org/problem?id=3286 题目大意: 输入n,m,求[n,m]的所有数字中,0出现的总数是多少,前导零不算. 解题思路: 模板题,设dp[pos][num ...
- [poj 3252]数位dp前导0的处理
通过这个题对于数位dp中前导0的处理有了新的认识. 题目链接:http://poj.org/problem?id=3252 //http://poj.org/problem?id=3252 #incl ...
- POJ 3252 区间内一个数的二进制中0的数量要不能少于1的数量(数位DP)
题意:求区间内二进制中0的数量要不能少于1的数量 分析:很明显的是数位DP: 菜鸟me : 整体上是和数位dp模板差不多的 , 需要注意的是这里有前导零的影响 , 所以需要在dfs()里面增加zor ...
随机推荐
- 01_springboot2.x之springboot入门
1.简介 Spring Boot来简化Spring应用开发,约定大于配置, 去繁从简,just run就能创建一个独立的,产品级别的应用. 优点: 1.简化Spring应用开发的一个框架: 2.整个S ...
- Input:type属性
1.button:定义可点击的按钮(通常与 JavaScript 一起使用来启动脚本). <input id="" type="button" name= ...
- CSDN的验证码,为什么要这样呢
总是有连着的部分
- SpringCloud学习笔记《---04 Hystrix---》基础篇
- Nand flash 芯片工作原理
Nand flash 芯片型号为 Samsung K9F1208U0B,数据存储容量为 64MB,采用块页式存储管理.8 个 I/O 引脚充当数据.地址.命令的复用端口. 芯片内部存储布局及存储操作特 ...
- Ping- Ip- Linux必学的60个命令
1.作用 ping检测主机网络接口状态,使用权限是所有用户. 2.格式 ping [-dfnqrRv][-c][-i][-I][-l][-p][-s][-t] IP地址 3.主要参数 -d:使用Soc ...
- ps axu 参数说明
问题:1.ps axu 看到进程的time不清楚什么意思 ru: resin 31507 0.2 1.3 3569452 98340 ? Sl Jul28 7:11 / ...
- 【核心核心】10.Spring事务管理【TX】XML+注解方式
转账案例环境搭建 1.引入JAR包 IOC的6个包 AOP的4个包 C3P0的1个包 MySQL的1个驱动包 JDBC的2个目标包 整合JUnit测试1个包 2.引入配置文件 log4j.proper ...
- Lock方法是用于数据库的锁机制,
Lock方法是用于数据库的锁机制,如果在查询或者执行操作的时候使用: lock(true); 复制代码 就会自动在生成的SQL语句最后加上 FOR UPDATE或者FOR UPDATE NOWAI ...
- ElasticSearch _bulk批量处理报错The bulk request must be terminated by a newline
在JSON数据最后回车换行,代码中可以