AcWing 56 从1到n整数中1出现的次数
发布日期:2021-05-28 16:30:44
浏览次数:26
分类:技术文章
本文共 1116 字,大约阅读时间需要 3 分钟。
题目描述:
输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。
例如输入12,从1到12这些整数中包含“1”的数字有1,10,11和12,其中“1”一共出现了5次。
样例
输入: 12输出: 5
分析:
直接枚举n个数,复杂度太高。现在比如51023,对于第一个数5 > 1,若最高位是1,有10000-19999共10000种情况;第二个数就是1,左边数是0-4时,右边可以是000-999,左边数为5时,右边数是000-023,一共5*1000+24=5024种情况;第三个数为0,要使它为1,左边可以是0-50,右边可以是0-99,共5100种情况;第四个数是2,当其为1时,左边可以是0-510,右边可以是0-9,一共5100种情况;第五个数是3,当其为1,左边的数可以是0-5102,共5103种情况。1一共出现了30337次。
通过上例可以发现,我们考察某数n=abcde时,比如考察c这一位,如果c大于1,则左边可以是0-ab,右边可以是0-99;如果c等于1,左边是0-ab-1时,右边可以是0-99,左边是ab时,右边可以是0-de;如果c等于0,则左边可以是0-ab-1,右边可以是0-99。所以我们需要求出每一位左边和右边的数是什么以及当前位的权值。
所以很容易得到以下程序:
class Solution {public: int numberOf1Between1AndN_Solution(int n) { if(!n) return 0; vector num; while(n) num.push_back(n % 10),n /= 10; int ans = 0; for(int i = num.size() - 1;i >= 0;i--){ int l = 0,r = 0,t = 1; for(int j = num.size() - 1;j > i;j--) l = l * 10 + num[j]; for(int j = i - 1;j >= 0;j--) r = r * 10 + num[j],t *= 10; ans += l * t; if(num[i] == 1) ans += r + 1; else if(num[i] > 1) ans += t; } return ans; }};
转载地址:https://blog.csdn.net/qq_30277239/article/details/88378719 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2024年12月04日 11时13分50秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
mysql有那些存储引擎_MySQL有那哪些存储引擎
2019-06-17
下面哪个不是mysql的合法标识符_下面哪个不是SQL Server 的合法标识符的是
2019-06-17
java操作oracle_java操作oracle数据库示例
2019-06-17
java ftp 客户端程序_Java的FTP协议级客户端实现详解
2019-06-17
java 克隆 对象_Java对象克隆
2019-06-17
ext下拉框不允许输入_怎么给ext的下拉框设默认值
2019-06-17
java参数-xms_关于java -Xms参数的疑问
2019-06-17
java点击图片事件_点击切换窗口监听事件,想把play这张图片写成一个按钮,然后...
2019-06-17
java 计算父亲节_写了一个简单的计算父亲节母亲节等日期的方法
2019-06-17
mysql 一周_MySQL-第一周
2019-06-17
java语言是解释性语言_解释性语言和编译性语言
2019-06-17
java增加新图形形状_Java 添加Word形状或图形
2019-06-17
sqlite 存储图片java_Android-sqlite数据库存取图片信息
2019-06-17
简易php论坛_SCWS PHP 中文简易分词
2019-06-17
php 脚步 标准运行时间_测量php脚本执行时间的准确方法
2019-06-17
jmeter安装 java,软件测试学习教程——jmeter配置、安装
2019-06-17
php 伪静态403错误,htaccess伪静态导致的403错误
2019-06-17
php 进程管理,从 0 到 1 优雅的实现 PHP 多进程管理
2019-06-17
php 获取xlsx,使用php读取xlsx文件
2019-06-17