求一批整数中出现最多的个位数字_(43)C++面试之从1到n整数中1出现的次数

e26f6fb814e538453eca0472f9e6c3da.png

// 面试题43:从1到n整数中1出现的次数

// 题目:输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如

// 输入12,从1到12这些整数中包含1 的数字有1,10,11和12,1一共出现了5次。


#include <cstdio>
#include <cstring>
#include <cstdlib>int NumberOf1Between1AndN(int n)
{if(n<0)return 0;//数字转字符串char str[50];sprintf(str,"%d",n);//21345变为“21345”return NumberOf1(str);
}int NumberOf1(const char* str)
{if(!str||*str<'0'||*str>'9'||*str='0')return 0;//假设输入21345int first=*str-'0';//最高位字符串转整数 2unsigned int length =static_cast<unsigned int>(strlen(str));//5if(length==1&&first==0)//输入为0return 0;if(length==1&&first>0)//输入为1-9return 1;//输入str “21345”//numFirst是数字10000--19999的第一位的数目//开头是1, 后面四位为1-9里任意一个 供10×10×10×10,写一个函数实现这个计算int numFirst=0;if(first>1)//2numFirst=PowerBase10(length-1);else if(first==1)//12345numFirst=atoi(str+1)+1;//atoi为char转int, atoi(str+1)结果是2345//numOtherDigits为 1346--21345除第一位之外的数位中的数目int numOtherDigits=first*(length-1)*PowerBase10(length-1)//2*(5-1)*10*10*10//numRecursive是1---1345中的数目,递归实现int numRecursive=NumberOf1(str+1);//numberOf1("1345")return numFirst+numOtherDigits+numRecursive;}int PowerBase10(unsigned int n)
{int result=1;for(int i=0;i<n;++i)result*=10;return result;
}void Test(char* testName,int n,int expected)
{if(testName==nullptr)printf("failed n");int result=NumberOf1Between1AndN(n);if(result==expected)printf("pass n");else{printf("failed n");}}void Test()
{Test("Test1", 1, 1);Test("Test2", 5, 1);Test("Test3", 10, 2);Test("Test4", 55, 16);Test("Test5", 99, 20);Test("Test6", 10000, 4001);Test("Test7", 21345, 18821);Test("Test8", 0, 0);
}int main()
{char str[]="12345";int first=*str-'0';int num=atoi(str+1);printf("first=%d n",first);//1printf("num=%d n",num);//2345Test();return 0;
}
int NumberOf1Between1AndN(unsigned int n)
{int number = 0;for(unsigned int i = 1; i <= n; ++ i)number += NumberOf1(i);return number;
}int NumberOf1(unsigned int n)
{int number = 0;while(n){if(n % 10 == 1)number ++;n = n / 10;}return number;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机应用全能,全能计算助手

应用介绍全能计算助手是一款专门为中小学生乃至成年人使用的全能计算机高级计算器&#xff0c;是你随身的数学好帮手。日常计算、函数绘图、分式化简、方程组求解、多项式分解和展开、微积分&#xff0c;统统包含其中&#xff0c;是超越一般计算器的高级计算器。自动计算器&…

j2me安装_Java第一步 JDK安装

安装JDK之前需要了解Windows下DOS命令winr 输入cmddir&#xff1a; 列出当前目录下的文件以及文件夹md&#xff1a;创建目录[文件夹]rd&#xff1a; 删除目录cd&#xff1a; 进入指定目录cd..&#xff1a;从当前目录退回到上一级目录cd&#xff1a;从当前目录退回到根目录&…

继续教育计算机组成原理a试卷,计算机组成原理模拟试题及答案西工大.doc

本科生期末试卷一一&#xff0e; 选择题(每小题1分&#xff0c;共10分)1&#xff0e;计算机系统中的存贮器系统是指______。A RAM存贮器B ROM存贮器C 主存贮器D 主存贮器和外存贮器2&#xff0e;某机字长32位&#xff0c;其中1位符号位&#xff0c;31位表示尾数。若用定点小数表…

sql left join用法_图解 SQL 中 JOIN 的各种用法

点击上方“Java知音”&#xff0c;选择“置顶公众号”技术文章第一时间送达&#xff01;作者&#xff1a;CodingStarcnblogs.com/BoyceYang/p/3145279.html一、概要JOIN对于接触过数据库的人&#xff0c;这个词都不陌生&#xff0c;而且很多人很清楚各种JOIN&#xff0c;还有很…

超级计算机清华,从清华到华科 名校为何主办超级计算机大赛?

古罗马政治家、哲学家塞涅卡曾经说过&#xff1a;“自然赐给了我们知识的种子&#xff0c;而不是知识的本身。”在超级计算机领域&#xff0c;ASC世界大学生超级计算机竞赛正是这样一颗“种子”&#xff0c;北京、上海、广州、太原、武汉……ASC竞赛正在将超算的知识播撒到全球…

2019计算机组成原理及答案,2019计算机组成原理复习题(一)

《2019计算机组成原理复习题(一)》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《2019计算机组成原理复习题(一)(3页珍藏版)》请在人人文库网上搜索。1、一、填空类型题1设浮点数阶码为8位(含1位阶符)&#xff0c;尾数为24位(含1位数符)&#xff0c;则32位二进制补码…

python __reduce__魔法方法_非常全的通俗易懂 Python 魔法方法指南(下)

点击上方“咸鱼学Python”&#xff0c;选择“加为星标” 第一时间关注Python技术干货&#xff01; 作者&#xff1a;Rafe Kettler 翻译&#xff1a;hit9 来源&#xff1a;https://pyzh.readthedocs.io/en/latest/python-magic-methods-guide.html 06. 反射 你可以通过定义魔法方…

计算机一级查询记录,技巧查看电脑中使用过的记录痕迹的详细教程

XP的系统是很多的用户还在操作的一款系统&#xff0c;其实现在更新以后最新的系统也是很好的使用的&#xff0c;开机的时候很多的用户对于不同的设置开机的时间还有如果你的电脑被别人的看到了的话是怎么实现查看的呢&#xff0c;今天小编就来跟大家分享一下技巧查看电脑中使用…

图像中值滤波python代码_图像中值滤波FPGA实现

C语言实用数字图像处理.pdf6.34 MB05-11-13|19:30 FPGA实验报告-李炎东.doc633.66 kB16-01-14|10:28 中值滤波在红外成像引信中的应用及硬件实现.caj31.64 kB12-12-13|16:47 图像中值滤波硬件算法及其在FPGA中的实现.pdf344.77 kB05-11-13|21:14 图像灰度增强算法的研究.pdf1.7…

python生成固定长度随机数_python日记——random模块

randomrandom模块用于生成伪随机数。真正意义上的随机数(或者随机事件)是按照实验过程中表现的分布概率随机产生的&#xff0c;其结果是不可预测的。而计算机中的随机数是所谓的随机函数按照一定算法模拟产生的&#xff0c;其结果是确定的&#xff0c;是可预测的。所以用计算机…

计算机室内设计cad实践报告,cad实习报告3000字

电子电路设计是现代信息技术的重要科学&#xff0c;是从事设计各种元器件、电路设计和电子系统设计与制造的技术性强的学科&#xff0c;也是我国正在大力发展并继续人才的重要专业技术领域。从事该行业的工程人员具有电子应用于设计的基础理论、基本知识和基本技能&#xff0c;…

foreach判断最后一个_ArrayList集合为什么不能使用foreach增删改?

点击上方“Java技术前线”&#xff0c;选择“置顶或者星标”与你一起成长译者&#xff1a;奋斗的小程序员链接&#xff1a;http://suo.im/4XaI8Q编程过程中常常需要使用到集合&#xff0c;而ArrayList也是我们常常使用的&#xff0c;但是最近在一次删除和增加中出现了一些问题&…

计算机文本处理竞赛题目,文字处理竞赛题目(word2010).pdf

文字处理竞赛题目(word2010).pdf (5页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;11.90 积分文字录入与排版高手竞赛 大 学 计 算 机 基 础 教 研 室 2 0 1 5 / 1 1 / 1 滁州学院 滁州学院《大学计…

头部外伤指什么_什么是颅骨缺损?

什么是颅骨缺损&#xff1f;颅骨缺损颅骨缺损(defect of skull)是指因开放性颅脑损伤造成的颅骨残缺&#xff0c;导致脑部与外界直接相通。颅脑创伤是造成颅骨缺损的主要原因。颅骨缺损综合征是该病的主要症状&#xff0c;常表现为头痛、头晕、缺损处不适、缺损边缘疼痛及感觉过…

java+什么时候才需要deploy_细思极恐 - 什么才是真正的会写 Java ?

文章核心其实&#xff0c;本不想把标题写的那么恐怖&#xff0c;只是发现很多人干了几年java以后&#xff0c;都自认为是一个不错的java程序员了&#xff0c;可以拿着上万的工资都处宣扬自己了&#xff0c;写这篇文章的目的并不是嘲讽和我一样做java的同行们&#xff0c;只是希…

csgo自建服务器打人机,csgo如何跟好友打人机 | 手游网游页游攻略大全

发布时间&#xff1a;2017-02-14CSGO即将在4月18日开启国服先锋测试,如何在CSGO中添加好友呢?下面为大家分享一下CSGO国服加好友方法,一起来看看吧. CSGO国服怎么加好友: 1.打完官匹想加队友好友只需要打开游戏界面正上方观战-我的比赛. ...标签&#xff1a;攻略秘籍 乐游知道…

python求定积分的函数_手搓计算化学(GTO积分by python)

挤牙膏&#xff08;1/∞&#xff09;完全基于Python的GTO积分库get√scf因为惨不忍睹已经回炉重做&#xff08;&#xff08;用python不用c是因为还有其他后续工作&#xff0c;不能封装得连函数都看不到&#xff08;不然怎么重载代码还提供了积分值公式推导的符号计算&#xff0…

java8新特性_Java8新特性_lambda表达式

lambda介绍λ &#xff0c;希腊字母表中排序第十一位的字母&#xff0c;英语名称为Lambda。lambda 表达式&#xff0c;也可称为闭包&#xff0c;它是推动Java 8 发布的最重要新特性&#xff0c;允许把函数作为一个方法的参数&#xff08;函数作为参数传递进方法中&#xff09;。…

ajax实现局部删除,Express+AdminLTE+hbs+Ajax实现局部刷新终极版(第二部分)

上一篇中已经把所有思路都理顺了&#xff0c;这边我们就开始具体编码吧。(如果您有更好的办法&#xff0c;欢迎留言讨论&#xff01;互相学习&#xff01;)我们先来看一下最终完成的效果&#xff1a;一&#xff1a;完整项目目录结构如图所示&#xff1a;二&#xff1a;更换模板…

打乱 数字_崔召幼儿园中班悦享时光——亲子益智游戏数字配对

亲爱的小朋友们&#xff0c;我们已经掌握了简单的&#xff0c;数字宝宝&#xff0c;今天让我们通过已有的数字经验和点数经验来玩一个数字配对的游戏吧&#xff01;准备&#xff1a;1.准备骰子一个&#xff0c;吸管一支&#xff0c;数字1-6卡片。 2.一个鞋盒盖&#xff0c;一个…