POJ - 3286 - How many 0s? 【数位DP】

Nettrace 源码分析 文章介绍:本文将围绕腾讯开源项目nettrace工具中数据采集,数据处理,数据分析三个模块深入源码分析其实现细节 阅读详情
How many 0's?
Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %I64d & %I64u

Description

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

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 m negative and this line should not be processed.

Output

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.

Sample Input

10 11
100 200
0 500
1234567890 2345678901
0 4294967295
-1 -1

Sample Output

1
22
92
987654304
3825876150

分析:题目要求当我们写下m, m+1, ..., n时,总共写下了多少个0

所以,枚举0出现在每一位上时的情况数,将全部情况数汇总求和,即可不多不少地计算总数。

这里要注意,我们写数字时不可能写出一个数字是0开头的(不允许前导0),这一点留心。

#include <cstdio>
#include <iostream>

using namespace std;

typedef long long LL;

int base[11];

void Init()
{
    base[1] = 1;
    for(int i=2; i<=10; i++) {
        base[i] = base[i-1] * 10;
    }
}

LL f(LL x)
{
    if(x == -1)    return 0;
    
    LL ret = 1; // 0的情况,下面没有讨论,在此补上
    LL temp = x;
    for(int i=1; temp/10; i++, temp/=10) { // 因为最高位不用(不允许前导0),所以判断条件写为 temp/10
        int now = temp % 10;
        LL l = x / base[i+1];
        if(now) {
            ret += l * base[i];
        } else {
            LL r = x % base[i];
            ret += (l-1) * base[i] + r + 1LL;
        }
    }
    return ret;
}

int main ()
{
    Init();
    LL m, n;
    while(scanf("%lld%lld", &m, &n) != EOF && m!=-1) {
        printf("%lld\n", f(n) - f(m-1));
    }
    
    return 0;
}

 

Silvaco Atlas新手入门:从安装到第一个半导体器件仿真(附DeckBuild配置) 本文为Silvaco Atlas新手提供了一份从软件安装、DeckBuild环境配置到完成第一个半导体器件仿真的实战指南。通过构建一个经典的PN结二极管案例,详细讲解了Atlas仿真语句的语法、核心命令顺序以及结果调试与可视化方法,帮助初学者快速上手并理解TCAD仿真流程。 阅读详情

相关推荐

开源网格划分软件-Gmsh二次开发教程 (4)网格生成与控制​

​本章将深入讲解Gmsh的网格生成技术,包括全局/局部网格控制、边界层生成、自适应细化等,并提供完整的代码示例。

ZQGG的博客 1472

POJ - 3286 - How many 0's? 【数位DP】

How many 0's? Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Description A Benedict monk No.16 writes down the decimal representations of ...

weixin_30825581的博客 166

基于ROS2的实时视频流转换:image2rtsp在多路相机采集中的应用

本文详细介绍了如何在ROS2机器人系统中使用image2rtsp工具,将ROS2内部的相机图像话题实时转换为标准的RTSP视频流。重点阐述了其安装配置、核心参数调优,并提供了多路相机采集的实战方案,解决了机器人视觉数据跨平台、跨网络分发的难题,极大提升了视频流集成的部署效率。

weixin_29214559的博客 395

UVa11038 How Many O's? (计数)

Description Problem E: How many 0's? 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

逐梦日记 554

VS2022如何兼容老项目?.NET Framework 4.0/4.5安装避坑指南

本文提供了在Visual Studio 2022中兼容和维护.NET Framework 4.0/4.5等老旧项目的完整解决方案。针对VS2022无法直接识别旧框架的核心问题,文章详细剖析了原因,并重点推荐通过官方NuGet包安全获取引用程序集的方法,给出了从下载、解压到部署至标准目录的详细步骤。同时,文章还深入探讨了项目文件格式过旧、NuGet包还原失败等进阶问题的排查与解决策略,旨在帮助开发者高效、稳定地在现代开发环境中维护历史代码库。

weixin_27734811的博客 513

解决Android UVCCamera stopPreview 报错 崩溃 闪退 问题

在使用libuvccamera库的UVCCamera时,经常在调用stopPreview关闭预览的时候,app直接崩溃闪退了,经过综合各种修改源码的方案,已解决这个问题,以下请参考: 首先找到android_usbfs.c,linux_usbfs.c两个原文件,在两个文件中都可以找到这段代码,按如下示例修改: 修改前: for (i = 0; i < num_urbs; i++) { if (urb == tpriv->iso_urbs[i]) { urb_idx = i + 1;

hanye2020的博客 3576

How many 0's?(求区间某一个数的个数,好题)

How many 0's? Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3207   Accepted: 1707 Description A Benedict monk No.16 writes down the decimal representations

不会思考的机器 505

GD32F470实战:如何用EXMC+SDRAM为LVGL打造超大内存池(附完整配置代码)

本文详细介绍了如何利用GD32F470的EXMC接口与SDRAM深度整合,为LVGL构建高性能内存解决方案。通过硬件架构设计、EXMC接口配置、高级内存管理策略及LVGL性能优化技巧,开发者可以突破微控制器内存限制,实现高分辨率显示和复杂动画效果。附完整配置代码,助力嵌入式GUI开发。

rrr55的博客 545

UVA - 11038 How Many O's?

题目 用了数位dp递推的方式。 思路: 表示以开头位的0数。 表示以开头位的数总数。 ; 如果的话还要加上; 这样DP数组就求出来了,接下来的问题就是怎么计算。 与一般数位DP不同的是,假如之前有位是0的话,这一位的结果还要加上 其中i小于这一位。(想一想,为什么?) #include &lt;bits/stdc++.h&gt; using namespace std; ...

vivian_hy的博客 291

ccSwitch 安装使用指南,claude code的最佳搭档

ccSwitch 是一款真正为 AI 编程开发者打造的效率工具。它把原本繁琐的配置管理工作,简化成了直观的图形界面操作。无论你是需要在多个 API 提供商之间切换,还是想要统一管理多款 AI 编程工具,ccSwitch 都能帮你大幅提升效率。如果你是重度 AI 编程工具用户,强烈推荐尝试一下 ccSwitch,相信它会成为你开发工具箱中不可或缺的一员。项目地址。

篮球界最会写bug的人;程序猿中打球最菜的人。 1282

华为OD机试真题 新系统 2026-09-06 Python&JS【仓储货物有序出库】

某仓储中心有一个货物堆放区,货物编号按乱序堆叠存放,只能从顶部取货,管理员需要将货物按编号从小到大取出。

MISAYAONE的博客 114

UVA11038- How Many O's?(组合数学)

题目链接 题意:求出在a到b之间的数中,有多少个0。 思路:组合数学问题。可以枚举每个位置上的数i,假设i之前的数为left,后面的为right,后面有num位数。当i != 0时,将i置为0,所以组合数为left * 10^num(后面的位数,每一位有10种选择),当i = 0时,当前面取[1, left - 1]时,保证组合的数一定小于原来的数,所以后面的可以取10^n

懒人一枚。 1155

《网络摄像机实战11:flutter_webrtc支持 AWS Kinesis Video Streams信令服务器》

本文介绍了如何在Flutter项目中集成WebRTC实现网络摄像头的实时视频和音频对讲功能。通过使用flutter_webrtc插件,开发者可以快速构建跨平台的视频通信应用。文章详细说明了集成步骤:1)安装flutter_webrtc插件;2)配置信令服务器和KVS服务;3)初始化本地/远程视频渲染器;4)建立WebRTC连接并进行设备呼叫。最后展示了实际应用效果图,证明该方案能有效实现移动端与摄像头的实时音视频交互。该方案为开发智能家居监控等应用提供了技术参考。

lvj_158的专栏 356

How many 0‘s? POJ - 3286(数位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 Input consists of a sequence of lines. Each line contains two unsigned 32-bit integers m and n

tomjobs的博客 457

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

POJ 3286 How many 0's? (数位dp)

题目:http://poj.org/problem?id=3286 题意:求n-m之间的数含有的0的个数。 思路:用数位dp记忆化搜索模版。 代码: #include #include #include #include #define MOD 1000000007 #define INF 0x7fffffff using namespace std; typedef long l

cookiesMonster 319

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

POJ 3286 How many 0's?(数位dp)

题目链接:POJ 3286 How many 0’s?题意 输入n,m,求n~m范围内的所有数字中,0出现的总数是多少。 思路 用2034做个例子。 枚举0在个十百千位上出现的次数 个:个位为0时,后面不需要考虑,只需考虑前面,因为0比4小,所以前面即使取到最大也不会过限,所以前面可以是1~203(因为当前位是0,所以前面不能是0)。一共203种。 十:十位为0时,前面取1

YiShi's Blog 2241

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

poj3286--How many 0's?(数位dp)

题目链接:点击打开链接 题目大意:给出m和n(n>=m),求m到n区间内的0的个数和。 数位dp,注意统计前缀为0的,和要求的数的高位存在0,对低位的影响。 #include #include #include using namespace std ; #define LL __int64 LL dp[12][10] , num[12] ; void init() { int

随风的专栏 1027

poj-3286 How many 0's?

题意: 求[A,B]区间内0的个数; 0 题解: 裸数位DP吧; 令f[i][j]表示i位数以j开头含零的个数; sum[i]表示不含前导零的i位数含零的个数; 然后按位分解瞎TM乱搞; 注意枚举每一位可能值的时候要加上高位的零个数*10^位数; 就是说前面确定了之后后面所有数都有这些零; 这题还是调了半天。。。我还是太弱乱搞功底不足啊; 我至今的数位DP还是

140142 892

POJ3286:How many 0's?(数位DP)

Description 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 Input consists

ACM!荣耀之路! 2625

poj 3286 How many 0's? 数位dp

题意:输入m,n(m<=n),求[m,n]间数字0出现的次数。

便纵有千种风情 415

Poj-3286- How many 0's? - 【基础数位DP】

How many 0's? Description A Benedict monk No.16 writes down the decimal representations of all natural numbers between and includingmandn,m≤n. How many 0's will he write down? Input In...

weixin_30726161的博客 184

POJ 3286 How many 0's?(数位DP)

题目链接 终于过了,边界让我wa了好几次,猥琐的用AC代码对拍,很无奈,用非常麻烦的方法。写一下,估计以后再碰到,肯定看不懂这是写的什么了。 以前做过,统计1和2的,统计0比1和2麻烦多了,有前导0的情况,不太好弄。 算是用统计方法,先把sp[len-1]所有的加上,长度为len-1的情况。 然后就是长度为len的情况。从高位到低位,遍历。 如果此位是0,judge(str+1) + 1...

weixin_30764137的博客 91

UVA11038 How Many O's?

题目链接:传送门 貌似可以数位dp 但这种思路还是很不错的 /** * @Date: 2019-04-01T14:41:49+08:00 * @Last modified time: 2019-04-01T14:41:49+08:00 */ #include <iostream> #include <cstdio> #include <cstring>...

良月澪二的博客 472

uva 11038 - How Many O's?(计数问题)

题目链接:uva 11038 - How Many O's? 题目大意:写出m到n之间的数,问需要写多少个0. 解题思路:f(x)表示从0到x需要写多少个0,于是给出区间[m,n]就有答案等于f(n)-f(m-1)。剩下的就是f(x)该如何求。枚举每个位置上可能为0的情况,这样就将这个数分成两个部分,在保证组成的数小于x的前提下,计算可以的组成方法。 例:x=12345,枚举十位为0

不慌不忙、不急不躁 2381

UVA - 11038 How Many O's? (计数)

Description Problem E: How many 0's? 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?

那些年 1471

UVa11038 - How Many O's?(统计0的个数)

Problem E: How many 0's? A Benedict monk No. 16 writes down the decimal representations of allnatural numbers between and including m and n, m≤ n. How many 0's will he write down? Input consists

多看多听多总结 771
上一篇: ZOJ - 3609 —— Modular Inverse 【乘法逆,扩展欧几里得】
下一篇: hiho 1033 —— 交错和 【数位DP】
AcIsFun
博客等级 码龄10年 1粉丝 92原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值