pat1049Counting Ones (30)
题意分析:
(1)给出一正整数N,求从1到N之间的所有数当中含有1的个数
(2)此题最容易想到的是从1到N遍历,求每个数中包含1的个数,但这样在数字比较大时,肯定超时。如果不遍历,那要怎么去求呢?这就需要寻找数学规律了。我们先从每一位开始:求当某个位置为1时共有有多少个数.以百为为例,如12145、12045、12145.即可能存在三种情况:
①若此数百位本身就等于1,如12145,则大于等于100的有100~199、1100~1199、2100~2199...、11100~11199,另外还有12100~12145;所以当百位为1时,分高位部分和低位部分,即百位为1的数有12*100+45+1个;
②若百位等于0,如12045,则大于等于100的有100~199、1100~1199、2100~2199...、11100~11199,即百位为1的数有12*100个
③若百位大于1,则12345,则大于等于100的有100~199、1100~1199、2100~2199...、11100~11199、12100、12199,即百位为1的数有(12+1)*100个
(3)然后按照此思路同样去求其他位置为1的个数
可能坑点:
(1)此种思路很不容易想到,但要是抓住计算某一个位置为1的个数,在统计总数还是比较容易找到突破口的
(2)暴力肯定超时
#include <iostream>
using namespace std;int getOnes(int N)
{int cnt=0,i=1;int index,high,low;while(N/i!=0){high=N/(i*10);low=N-(N/i)*i;index=(N/i)%10;if(index==0)cnt+=high*i;if(index==1)cnt+=high*i+low+1;if(index>1)cnt+=(high+1)*i;i=i*10;}return cnt;
}int main()
{int N;cin>>N;cout<<getOnes(N)<<endl;return 0;
}
pat1049Counting Ones (30)相关推荐
- Linux 内核,30 年C 语言将升级至 C11
Linux 内核,30 年C 语言将升级至 C11 还在使用 89 年版 C 语言的 Linux 内核,现在终于要做出改变了.今天,Linux 开源社区宣布,未来会把内核 C 语言版本升级到 C11, ...
- 30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?
很多人都说,30岁以后了,写程序还有前途嘛?我有时候也迷茫,但是迷茫过后,总会给自己寻找方向,每个人都需要有个信念.没有信念,活着就没意思,无聊,觉得没奔头了. 废话少说,我来说说,我平时工作都忙些什 ...
- 30 个 php 操作 redis 常用方法代码例子
这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类 型. list 类型和 set 类型的数据 , 需要的朋友可以 ...
- 30岁前挣够500万
教你30岁前挣够500万!(不妨看完,心态会改变.) 成功源于自信!相信自己.下边每个字都是价值不菲,你认真看了吗? 一艘没有航行目标的船,任何方向的风都是逆风 1.你为什么是穷人, ...
- 荣耀30pro系统_荣耀30 pro:正式再见!
但随着市场竞争加剧,最近荣耀在价格上再次妥协,也是为了给新机开始让步,马上就是荣耀V40系列的发布会了,迭代荣耀30 pro+也不再坚挺,笔者从第三方平台上看到数据,荣耀30pro+这款手机大降520 ...
- 30个精美的模板,贺卡,图形圣诞素材
圣诞节离我们越来越近了,当我们送礼物给我们所爱的,花时间与家人欢乐.我们都喜欢收到圣诞贺卡.,如果你有大量的生活很远的亲戚的话,你可以给他一个Email.本文介绍了从商场收集的30个圣诞素材,你可以创 ...
- 双显卡单独分辨率_CPU、GPU双重碾压!AMD RX 6000系列显卡正式发布 16G显存吊锤RTX 30...
期待已久的AMD新一代显卡终于发布了,全新Radeon RX 6000系列显卡正式登场,首批包括RX 6800.RX 6800 XT.RX 6900 XT三款型号,均基于RDNA 2架构.Navi 2 ...
- 厦门大学计算机科学每年的保研率是多少,厦大保研率大曝光,高达30%!研厦党该何去何从?...
原标题:厦大保研率大曝光,高达30%!研厦党该何去何从? 厦门大学2020年研究生推免拟录取名单已经公布了,很多小伙伴们对其推免名额是非常关心的!作为一个贴心的小厦,怎么不能做个好榜样呢?现在就为大家 ...
- Rust 1.30带来更多元编程支持,并改进了模块系统
Rust的最新版本1.30扩展了过程宏,允许它们定义新的属性和类似于函数的宏.此外,它简化了Rust模块系统,使其更加一致.直观. Rust 1.30引入了两种新类型的过程宏,"类属性的过程 ...
最新文章
- python保存list
- ebs查看服务状态_Oracle EBS - 工单状态
- linux c remove 删除文件或目录函数
- iOS开发的库的列表,不完全是开源库
- WeekDay TO DateTime
- 为什么别人有微粒贷,而你没有?
- 三角形周长最短问题_一道三角形周长最小值问题
- 解决:Throwable:Stub index points to a file without PSI: com.intellij.openapi.fileTypes.UnknownFileType
- Android官方开发文档Training系列课程中文版:与其它APP交互之将用户带到其它的APP
- php 仿高德,仿高德路线规划滑动效果
- mso-number-format
- VS Code 神器插件:代码一键运行,支持超过 40 种语言!
- magento xml配置详解(1)
- 360n4刷android8.1,【从此,任何人都可以刷N4】关于系统降级===线刷方法,我也说两句吧。...
- 开源库MusicPlayManager - 封装StarrySky音乐库
- 国产DSP/ARM+复旦微ZYNQ/A7/K7 FPGA系列解决方案
- android 脸部识别之3D,这两款安卓手机也支持3D结构光人脸识别
- PAT乙级 1070 结绳
- 移动硬盘无法读取怎么修复?这一招好用
- [转]百度UEditor编辑器(php)
热门文章
- html期末作业代码网页设计 城市旅游网站设计——城市旅游-北京(5页) HTML+CSS+JavaScript 主题度假酒店 计划出行北京
- Web前端学习之 CSS基础二
- proto: file “EntryProtocol.proto“ has a name conflict over 解决方案
- 【 高透明塑料抗菌剂iHeir-ECO 塑料制品添加剂】
- ng-zorro-antd高版本没有设置表格自动换行
- 椭球面积计算程序_任意位置的椭球对着点源的立体角的解析计算
- 这样回你微信的人,就是瞧不起你
- 线程池 的 特点、4种创建方式 、7大核心参数
- fork exec时打开文件的变化
- 转发:11个web前端开发实战项目案例+源码!拿走就是了