UVA11038
题目大意:见刘汝佳《算法竞赛入门经典——训练指南》P173
解题思路:
求出 0 到 m-1 这些数字中 0 出现的次数(此处要特判 m = 0 的情况),再求出 0 到 n 这些数字中 0 出现的次数,后者减去前者即是答案。
求 0 到某一个数字这些数字中 0 出现的次数:
从第二高位枚举每一位上 0 出现的次数:1、这一位上的数字是 0,我们以 10030 的百位为例,这一位上的 0 出现的次数为:(10 - 1)*100 + 30 + 1;2、这一位上的数字不是0,我们以 10330 的百位为例,这一位上的 0 出现的次数为:10*100。别忘记考虑 0 哦,所以得出的答案再加上 1 才是正解。
AC代码:
#include <iostream>
#include <cstdio> using namespace std;
typedef long long ll; int main(){
ll m,n;
while(scanf("%lld%lld",&m,&n)==&&m>=&&n>=){
m--;
ll ans1=;
if(m>=){
ll t1=;
while(m/t1>=)
t1*=;
while(t1){ //判断条件
if(m/t1%!=)
ans1+=m/(t1*)*t1;
else
ans1+=((m/(t1*)-)*t1+m%t1+);
t1/=;
}
ans1++;
}
else
ans1=; ll ans2=, t2=;
while(n/t2>=)
t2*=;
while(t2){
if(n/t2%!=)
ans2+=n/(t2*)*t2;
else
ans2+=((n/(t2*)-)*t2+n%t2+);
t2/=;
}
ans2++;
printf("%lld\n",ans2-ans1);
}
return ;
}
UVA11038的更多相关文章
- UVA 1103 How Many O's?
题目链接:UVA-11038 题意为给定n和m,求n和m之间(包含)的所有数包含的0的个数. 思路是,用cal(x)表示小于等于x的数包含的0的个数.则答案为cal(n)-cal(m-1). 再把求c ...
- UVa 11038 有多少个0
https://vjudge.net/problem/UVA-11038 题意: 输入两个非负整数m和n,求将m~n的所有整数写出来,一共要写多少个数字0? 思路: 举个例子来说: 12345 从右到 ...
随机推荐
- Android 5.0系统默认颜色
伴随着 Android5.0 的发布也更新了support-v7-appcompat 到 V21,其中增加了 ToolBar.recyclerview.cardview 等控件. Android5.0 ...
- 4.pickling 和unpickling是什么?
pickling 和unpickling是什么? Pickle module accepts any Python object and converts it into a string repre ...
- SpringBoot内置生命周期事件详解 SpringBoot源码(十)
SpringBoot中文注释项目Github地址: https://github.com/yuanmabiji/spring-boot-2.1.0.RELEASE 本篇接 SpringBoot事件监听 ...
- 解决ASP.NET WebPage的CS1061报错
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="pg_CompanyInfo ...
- IIS搭建网站(二)
win+IIS+ASP+ACCESS第二种搭建方式 安装 控制面板”,依次选“添加/删除程序”, 添加/删除Windows组件 在应用程序服务器前打钩.点击详细信息 将“Internet信息服务(II ...
- idea使用maven在install时跳过测试
在右边1处点开maven面板,然后选中2,会发现test已经×掉了,再进行install时将跳过test
- socket编程之并发回射服务器3
在socket编程之并发回射服务器一文中,服务器采用多进程的方式实现并发,本文采用多线程的方式实现并发. 多线程相关API: // Compile and link with -pthread int ...
- turtle库应用实例-五角星绘制
五角星绘制 ...
- E - 梦幻岛宝珠 HYSBZ - 1190 变形01背包 难
E - 梦幻岛宝珠 HYSBZ - 1190 这个题目我觉得很难,看题解都看了很久. 首先可以得到一个大概的思路就是分组,每一个数都可以分成 a*2^b 所以把b相同的数都分成一个组. 在每一组内部 ...
- idea撤销快捷键
Ctrl+z:撤销. Ctrl+shift+z:取消撤销.