题意分析:

(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)相关推荐

  1. Linux 内核,30 年C 语言将升级至 C11

    Linux 内核,30 年C 语言将升级至 C11 还在使用 89 年版 C 语言的 Linux 内核,现在终于要做出改变了.今天,Linux 开源社区宣布,未来会把内核 C 语言版本升级到 C11, ...

  2. 30+程序员,平时都忙些什么事情?平时都想些什么?以后有啥计划?

    很多人都说,30岁以后了,写程序还有前途嘛?我有时候也迷茫,但是迷茫过后,总会给自己寻找方向,每个人都需要有个信念.没有信念,活着就没意思,无聊,觉得没奔头了. 废话少说,我来说说,我平时工作都忙些什 ...

  3. 30 个 php 操作 redis 常用方法代码例子

    这篇文章主要介绍了 30 个 php 操作 redis 常用方法代码例子 , 本文其实不止 30 个方法 , 可以操作 string 类 型. list 类型和 set 类型的数据 , 需要的朋友可以 ...

  4. 30岁前挣够500万

    教你30岁前挣够500万!(不妨看完,心态会改变.) 成功源于自信!相信自己.下边每个字都是价值不菲,你认真看了吗?          一艘没有航行目标的船,任何方向的风都是逆风 1.你为什么是穷人, ...

  5. 荣耀30pro系统_荣耀30 pro:正式再见!

    但随着市场竞争加剧,最近荣耀在价格上再次妥协,也是为了给新机开始让步,马上就是荣耀V40系列的发布会了,迭代荣耀30 pro+也不再坚挺,笔者从第三方平台上看到数据,荣耀30pro+这款手机大降520 ...

  6. 30个精美的模板,贺卡,图形圣诞素材

    圣诞节离我们越来越近了,当我们送礼物给我们所爱的,花时间与家人欢乐.我们都喜欢收到圣诞贺卡.,如果你有大量的生活很远的亲戚的话,你可以给他一个Email.本文介绍了从商场收集的30个圣诞素材,你可以创 ...

  7. 双显卡单独分辨率_CPU、GPU双重碾压!AMD RX 6000系列显卡正式发布 16G显存吊锤RTX 30...

    期待已久的AMD新一代显卡终于发布了,全新Radeon RX 6000系列显卡正式登场,首批包括RX 6800.RX 6800 XT.RX 6900 XT三款型号,均基于RDNA 2架构.Navi 2 ...

  8. 厦门大学计算机科学每年的保研率是多少,厦大保研率大曝光,高达30%!研厦党该何去何从?...

    原标题:厦大保研率大曝光,高达30%!研厦党该何去何从? 厦门大学2020年研究生推免拟录取名单已经公布了,很多小伙伴们对其推免名额是非常关心的!作为一个贴心的小厦,怎么不能做个好榜样呢?现在就为大家 ...

  9. Rust 1.30带来更多元编程支持,并改进了模块系统

    Rust的最新版本1.30扩展了过程宏,允许它们定义新的属性和类似于函数的宏.此外,它简化了Rust模块系统,使其更加一致.直观. Rust 1.30引入了两种新类型的过程宏,"类属性的过程 ...

最新文章

  1. python保存list
  2. ebs查看服务状态_Oracle EBS - 工单状态
  3. linux c remove 删除文件或目录函数
  4. iOS开发的库的列表,不完全是开源库
  5. WeekDay TO DateTime
  6. 为什么别人有微粒贷,而你没有?
  7. 三角形周长最短问题_一道三角形周长最小值问题
  8. 解决:Throwable:Stub index points to a file without PSI: com.intellij.openapi.fileTypes.UnknownFileType
  9. Android官方开发文档Training系列课程中文版:与其它APP交互之将用户带到其它的APP
  10. php 仿高德,仿高德路线规划滑动效果
  11. mso-number-format
  12. VS Code 神器插件:代码一键运行,支持超过 40 种语言!
  13. magento xml配置详解(1)
  14. 360n4刷android8.1,【从此,任何人都可以刷N4】关于系统降级===线刷方法,我也说两句吧。...
  15. 开源库MusicPlayManager - 封装StarrySky音乐库
  16. 国产DSP/ARM+复旦微ZYNQ/A7/K7 FPGA系列解决方案
  17. android 脸部识别之3D,这两款安卓手机也支持3D结构光人脸识别
  18. PAT乙级 1070 结绳
  19. 移动硬盘无法读取怎么修复?这一招好用
  20. [转]百度UEditor编辑器(php)

热门文章

  1. html期末作业代码网页设计 城市旅游网站设计——城市旅游-北京(5页) HTML+CSS+JavaScript 主题度假酒店 计划出行北京
  2. Web前端学习之 CSS基础二
  3. proto: file “EntryProtocol.proto“ has a name conflict over 解决方案
  4. 【 高透明塑料抗菌剂iHeir-ECO 塑料制品添加剂】
  5. ng-zorro-antd高版本没有设置表格自动换行
  6. 椭球面积计算程序_任意位置的椭球对着点源的立体角的解析计算
  7. 这样回你微信的人,就是瞧不起你
  8. 线程池 的 特点、4种创建方式 、7大核心参数
  9. fork exec时打开文件的变化
  10. 转发:11个web前端开发实战项目案例+源码!拿走就是了