// 面试题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;
}

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

  1. 习题7-2 求一批整数中出现最多的个位数字 (20分)

    习题7-2 求一批整数中出现最多的个位数字 (20分) 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4, ...

  2. 7-6 求一批整数中出现最多的个位数字 (20 分)

    7-6 求一批整数中出现最多的个位数字 (20 分) 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均 ...

  3. 求一批整数中出现最多的个位数字

    给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次. 输入格式: 输入在第1行中给出正整数N( ...

  4. (难得要死)求一批整数中出现最多的个位数字

    题目描述 给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次. 输入 输入在第1行中给出正整数 ...

  5. 浙大版《C语言程序设计(第3版)》题目集习题7-2 求一批整数中出现最多的个位数字 (20 分)

    给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次. 输入格式: 输入在第1行中给出正整数N( ...

  6. 求一批整数中出现最多的个位数字_C语言经典100例007-求低n-1位的数

    系列文章<C语言经典100例>持续创作中,欢迎大家的关注和支持. 喜欢的同学记得点赞.转发.收藏哦- 后续C语言经典100例将会以pdf和代码的形式发放到公众号 欢迎关注:计算广告生态 即 ...

  7. 求一批整数中出现最多的各位数字

    描述 给定一批整数,分析每个整数的每一位数字,求出现次数最多的各 位数字.例如给定3个整数1234.2345.3456,其中出现最多次数的数字是3和4,均出现了3次.‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪ ...

  8. 求n个数中第k大的数_互联网高频面试题目:「回溯算法」求组合总和

    我将算法学习相关的资料已经整理到了Github :https://github.com/youngyangyang04/leetcode-master,里面还有leetcode刷题攻略.各个类型经典题 ...

  9. 面试中 项目遇见的难点答案_如何在面试中介绍自己的项目

    原文地址: https://www.cnblogs.com/JavaArchitect/p/7586949.html 如何在面试中介绍自己的项目经验 在面试时,经过寒暄后,一般面试官会让介绍项目经验 ...

最新文章

  1. linux下yum包更新不了
  2. java synchronized关键字
  3. Redis分布式锁(Redlock官方文档的理解)
  4. JMS中queue和topic区别
  5. angular和react_如何在Angular中验证默认和自定义React形式
  6. 64位ubuntu安装交叉编译器出现的问题。nuc972工程中的问题
  7. c+mysql+sslmode_MySQL配置SSL主从复制
  8. CMOS门与TTL门
  9. vscode代码拼写错误检测插件
  10. 团队作业6——展示博客(alpha阶段)
  11. autojs之语音识别
  12. XCel 项目总结 - Electron 与 Vue 的性能优化
  13. 南柯服务器压力,南柯梦崇洋(十一)
  14. 基于DCT变换的JPEG图像压缩原理
  15. 大数手算法开平方(Java实现)
  16. 视频监控摄像头直播主要应用领域分析
  17. 判断Iphone,Ipad当前网络状态
  18. Linux中最危险的是个命令(很有趣呦~)(链接:http://os.51cto.com/art/201408/448756.htm)
  19. iOS10.3后允许App运行中变更App图标
  20. python 实现京东滑块验证码登录

热门文章

  1. 2018年度机器学习50大热门网文
  2. 2018年9月杭州云栖大会Workshop - 基于日志的安全分析实战
  3. 关于CNN图像分类的一份综合设计指南
  4. EDAS再升级!全面支持Spring Cloud应用
  5. 国内首家,腾讯云云开发“全家桶”来了
  6. 漫画:什么是插入排序?
  7. 要闻君说:IBM最新量子计算机真真像个艺术品!鹅厂正式成立了自己的技术委员会哇!联想竟然也试着做了一款智能闹钟?...
  8. 微博热点事件背后数据库运维的“功守道”
  9. centos8共享文件夹挂载_CentOS 8 安装并配置NFS服务
  10. ironpython3桌面开发_IronPython项目有了新负责人