页码0~N ,其中0,1....9都出现了几次
/*
这道题目可以暴力解答:对1~n的每个数进行从低位到高位分析
一旦这个数字num出现,a[num]++即可
第二种方法:
由0,1,...9组成的所有n位数,从n个0到n个9共10^n个数,0,1,...9
出现的次数一样设为a(n),那么易得:
a(n)=10a(n-1)+10^(n-1) (n>1) a(n)=1(n==1)化简可得到
a(n)=n*10^(n-1).
那么这道题目从高位到低位依次处理,最后减去多余的前导零即可
*/
#include <bits/stdc++.h>
using namespace std;
int n,a[];
void solve(int n){
int l =log10(n)+;//n的位数
int p =n/(int)round(pow(10.0,l-));//当前的这位数字
//0~9都会出现p*(l-1)*(int)round(pow(10.0,l-2))次
for(int i =;i<;i++) a[i]+=p*(l-)*(int)round(pow(10.0,l-));
//0~p-1都会出现(int)round(pow(10.0,l-1))次
for(int i=;i<p;i++) a[i]+=(int)round(pow(10.0,l-));
int temp =(int)round(pow(10.0,l-));
temp=n%temp;
if(temp==) {//递归可以结束了
//如12500 p再出现一次,0再出现l-1次
a[p]++;
a[]+=l-;
return ;
}
int lt=log10(temp)+;
if(lt!=l-)//如20036
{
a[]+=(l--lt)*(+temp);
}
a[p]+=+temp;
return solve(temp);
}
int main(){ cin>>n;
solve(n);
int len = log10(n)+;
//减去前导零
for(int i =;i<len;i++) a[]-=(int)round(pow(10.0,i));
//如21536
//00000~09999 0出现了10000次
//0000~0999 0出现了1000次
//000~099 0出现了100次
//00~09 0出现了10次
//再加上一个0
for(int i =;i<;i++) printf("%d %d\n",i,a[i]);
return ;
}
页码0~N ,其中0,1....9都出现了几次的更多相关文章
- Ibatis 3.0 之前使用的都是2.0 3.0与2.0的内容有很大的不同
以前用过ibatis2,但是听说ibatis3有较大的性能提升,而且设计也更合理,他不兼容ibatis2.尽管ibatis3还是beta10的状态,但还是打算直接使用ibatis3.0, ibatis ...
- Safari 11.0 已发布,新特性都在这儿了!
Safari 11.0 兼容性 Safari 11.0 可运行于 iOS 11.0 和 macOS 10.1版本的系统环境,同时在macOS 10.12.6 和 10.11.6版本中也可以使用. Hi ...
- 创建或打开解决方案时提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案
提示"DotNetCore.1.0.1-SDK.1.0.0.Preview2-003131-x86"错误的解决方案: 1.检查是否有C:\Program Files (x86)\d ...
- R语言中的logical(0)和numeric(0)以及赋值问题
logical(0) 不等于 numeric(0).两者都不等于NULL值,即is.null(logical(0))和is.null(numeric(0))返还值都是FALSE.这很有意思,说明长度为 ...
- 解决 DotNetCore.1.0.1-VS2015Tools.Preview2.0.3.exe 在VS2015 Update3 安装失败的问题
今天抽空升级VS2015 Update3. 在安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.3.exe 时报错了,看了错误日志 显示: 看到我标红的两个地方,那么 ...
- 127.0.0.1、0.0.0.0和本机IP地址的区别和使用
一.表面上的区别如下: 首先假设本机有多个网卡:eth0 :192.168.0.1 eth1:192.168.1.1 lo: 127.0.0.1 0.0.0.0 不能ping通,代 ...
- [转] 安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2出现0x80072f8a未指定的错误
原文地址:安装DotNetCore.1.0.1-VS2015Tools.Preview2.0.2出现0x80072f8a未指定的错误 最近DotNetCore更新到了1.0.1,Azure tools ...
- hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录
一开始用hadoop2.2.0 + hbase 0.96 + hive 0.12 ,基本全部都配好了.只有在hive中查询hbase的表出错.以直报如下错误: java.io.IOException: ...
- 微软今日发布汇总:VS2015, .NET 4.6, C# 6.0, F# 4.0等重量级产品正式上线
Visual Studio Visual Studio 2015 下载 VS2015新功能列表 ‘ Visual Studio 2013 更新包 5.0 下载 其中包含Visual Studio 20 ...
- Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(三)
前两章我为大家详细介绍了如何搭建Maven环境.Spring MVC的流程结构.Spring MVC与Struts2的区别以及示例中的一些配置文件的分析.在这一章,我就对示例的层次结构进行说明,以及M ...
随机推荐
- tf.placeholder函数说明
函数形式: tf.placeholder( dtype, shape=None, name=None ) 参数: dtype:数据类型.常用的是tf.float32,tf.fl ...
- Ribbon自带负载均衡策略
IRule这是所有负载均衡策略的父接口,里边的核心方法就是choose方法,用来选择一个服务实例. AbstractLoadBalancerRuleAbstractLoadBalancerRule是一 ...
- K-string HDU - 4641 (后缀自动机)
K-string \[ Time Limit: 2000 ms\quad Memory Limit: 131072 kB \] 题意 给出长度为 \(n\) 的字符串,接下来跟着 \(m\) 次操作, ...
- [Python] Python忽略warning警告错误
Python忽略warning警告错误 1)代码中警告 import warnings warnings.filterwarnings("ignore") 2)忽略命令行下警告 ...
- YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe
test.py import os import sys sys.path.append(])+'/lib/lib3.7') import yaml with open("default.y ...
- Java中Set真的是无序的吗?
我们经常听说List是有序且可重复的,Set是无序且不重复的.这是一个误区,这里所说的顺序有两个概念,一是按照添加的顺序排列,二是按,照自然顺序a-z排列.Set并不是无序的传统所说的Set无序指的是 ...
- js正则表达式提取汉字和去掉汉字
//只提取汉字 function GetChinese(strValue) { if(strValue!= null && strValue!= "" ...
- 阿里云ecs centos yarn 安装
安装流程:https://yarn.bootcss.com/docs/install/#centos-stable
- 【Python】解析Python模块与包
模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. import语句是用来导入模块或者从模块里导入特定的类或者函数.如前面我们用过的math模块,从而可以 ...
- Mockito 的用法
本文为博主原创,转载请注明出处: Mockito 是一个基于MIT协议的开源java测试框架. Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为.对于moc ...