面试题12:打印1到最大的n位数

Java开发者必看:WPS Office在线预览接入实战(含回调配置避坑指南) 本文为Java开发者提供了WPS Office在线预览功能的完整接入实战指南。详细解析了从服务申请、生成带签名的访问URL,到实现核心回调接口(文件信息、用户信息、文件保存)的全流程,并重点分享了签名算法与回调配置中的关键避坑点,帮助开发者高效集成,提升Web应用文档处理体验。 阅读详情

题目:输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印1,2,3一直到最大的3位数即999.


分析

要打印1到最大的n位数,我们首先想到的方法是先计算出n,再逐次打印。但有一个很重要的问题,n大于9怎么办?(MAX_INT=2147483647,10位),这样要打印的数字就会超过整型可以表示的范围,所以说这是一个隐形的大数问题。

通常都是用字符串来解决大数问题的,所以我们在字符串上来模拟整数的计算。

思路就是,每次在最低位(字符串的最右边)加1,如果产生了进位,就加到下一位上去,否则表明没有进位,break掉。当最高位产生进位时,表示已经加到最大的n位数了,结束。

代码如下:

void PrintNumber(const string& number)
{
    int i;
    int length=number.size();
    for(i=0;i<length;++i)
    {
        if(number[i]!='0')
            break;
    }
    for(;i<length;++i)
    {
        cout<<number[i];
    }
    cout<<endl;
}

bool Increment(string& number)
{
    int length=number.size();
    bool IsOverFlow=false;
    int nTakeOver=0;
    int i;
    for(i=length-1;i>=0;--i)
    {
        number[i]+=nTakeOver;
        if(i==length-1)
            number[i]++;
        if(number[i]>=(10+'0'))
        {
            if(i==0)
                return true;
            else
            {
                number[i]-=10;
                nTakeOver=1;
            }
        }
        else
        {
            return false;
        }
    }
    return false;
}

void Print1ToMaxOfNDigits(int n)
{
    string number;
    number.resize(n);
    int i;
    for(i=0;i<n;++i)
    {
        number[i]='0';
    }
    while(!Increment(number))
    {
        PrintNumber(number);
    }
}

以上

如果你有任何想法或是可以改进的地方,欢迎和我交流!

完整代码及测试用例在github上:点我前往

家庭弱电最实用的功能,网线面板如何接线 按照规范,我国宽带入户线按B接法,即568B标准,从后面看,从左到右:1橙白,2橙,3绿白,4蓝,5蓝白,6绿,7棕白,8棕,即和水晶头的接法一致。做水晶头的时候,要注意排好线序,把8根线的头剪齐,留下大约1.8公分,插入水晶头的时候,水晶头要尾巴向下,把线插到水晶头的底端,用网线钳子夹紧。具体是:第1脚——橙白、第2脚——橙色、第3脚——绿白、第4脚——蓝色、第5脚——蓝白、第6脚——绿色、第7脚——棕白、第8脚——棕色,除了四根带颜色的线橙、绿、蓝、棕外,每一根白线上都有线标橙、绿、蓝、棕。 阅读详情

相关推荐

App渗透 - 人脸识别登录绕过

一、APP抓包和逆向破解加密算法打开APP是一个登录框抓包后发现参数被加密了使用Jadx脱源码发现,并没有加壳也没有混淆,运气很好根据经验,先搜索Encrypt、Decrypt等关键字,发现在Common.js中有一个encryptData函数定位过去,一套加解密算法都写好了放在这放到浏览器console里面调试,果然没错二、寻找注入点首先测试了一下注入明文:{"userName":"TEST'...

渗透测试研究中心 2823

java-65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999...

参考了网上的http://blog.youkuaiyun.com/peasking_dd/article/details/6342984 写了个java版的: [code="java"] public class Print_1_To_NDigit { /** * Q65.输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,则输出1、2、3一直到最大的3位数即999 ...

代码说-Let code talk 325

Type-C连接中的CC引脚:Rp与Rd电阻的识别与供电模式选择

本文深入解析Type-C接口中CC引脚的核心功能,包括Rp与Rd电阻的识别原理及供电模式选择机制。通过详细的分压计算和实战案例,揭示Type-C设备如何通过CC引脚实现方向检测、角色识别和供电协商,为硬件设计提供关键指导。

weixin_30616969的博客 341

打印从1到最大的n位数

题目描述: 输入数字n, 按顺序打印出从1到最大的n位十进制数。 比如输入3, 则打印出1、2、3一直到最大的3位数999。 #include &lt;iostream&gt; #include &lt;stdio.h&gt; bool Increment(char* number); void PrintNumber(char* number); void PrintToMaxOfDi...

大道朝天的博客 241

ArcMap 10.7/10.8启动加载界面后闪退?可能是这个隐藏的Normal.mxt模板文件在搞鬼

本文深入分析了ArcMap 10.7/10.8启动加载界面后闪退的问题,指出Normal.mxt模板文件损坏是常见原因。提供了从定位、删除模板文件到系统级修复的完整解决方案,帮助GIS工程师快速恢复工作流程。

weixin_28523493的博客 330

allegro 约束管理Constraint Manager(一)

介绍Cadence allegro 约束管理器CM的使用方法。

weixin_38975819的博客 8713

剑指Offer:面试题12——打印1到最大的n位数(java实现)

问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可。 public static void Print1ToMaxOfNDigits_1(int n){ int number = 1; int i = 0; ...

weixin_30497527的博客 469

C#实战:5分钟搞定Modbus RTU通讯(基于NModbus4库)

本文详细介绍了如何使用C#和NModbus4库快速实现Modbus RTU通讯,包括环境配置、核心功能实现、性能优化及常见问题排查。通过代码示例和实用技巧,帮助开发者高效完成工业自动化设备的数据采集与控制任务。

weixin_30689307的博客 467

顺序打印1到最大的n位数,比如输入3,打印1,2,3,~直到999

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33962923的博客 173

无人机蜂群作战设计技术详解

构建防御网络,拦截敌方无人机或导弹;无人机蜂群作战设计技术是一种创新的军事应用概念,它基于生物仿生学原理,通过先进的通信技术、自主导航与决策算法,将大量小型、低成本、功能各异的无人机组织成一个高度协同的群体,以执行复杂多样的军事任务。无人机蜂群作战的概念源于自然界中蜜蜂、蚂蚁等生物群体的行为模式,这些生物群体通过简单的个体间的信息交互和分工协作,能够完成远远超出单一个体能力的复杂任务。其中,无人机群体是执行任务的主体,指挥控制系统负责任务分配和决策,通信数据链则保障无人机群体与指挥控制系统之间的信息交换。

专注多旋翼、复合翼无人机技术研究,从事低空经济行业。 2214

【PostgreSQL教程】PostgreSQL 特别篇之 语言接口Java

本篇教程的Java程序中开始使用PostgreSQL之前,需要确保在计算机上设置了PostgreSQL JDBC和Java。您可以检查Java教程以在计算机上安装Java。现在让本篇教程检查如何设置PostgreSQL JDBC驱动程序。

No8g攻城狮的博客 1753

面试题12:打印1到最大的n位数

题目:   输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1,2,3,... ,一直到最大的3位数即 999. 题目的陷阱:   当输入的n很大时,此时就是一个大数问题。 解决方案:   在数组或者字符串上模拟数字加法的解法,绕过陷阱 Java代码: 1 package com.hb; 2 3 import ja...

137

ThingsBoard-阿里云短信规则节点

由于Thingsboard平台国内只支持短信服务,那我们运维人员去及时接收邮箱肯定是没有短信来的方便的,在这基础上,需要自己从规则链入手,自定义一个支持阿里云短信服务的规则节点。

weixin_67440240的博客 2094

Java之BigInteger(面试题12:打印1到最大的n位数)

1.  以《剑指offer 名企面试官精讲典型编程题》 - 面试题12:打印1到最大的n位数为例。 题目内容如下: 输入数字n,按顺序打印出从1到最大的n位十进制数。 比如输入3,则打印出1,2,3,... ,一直到最大的3位数即 999. 代码: import java.io.*; import java.util.*; import java.math.*; public

记录走过的风风雨雨 2113

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

《剑指Offer》面试题12:打印1到最大的n位数

《剑指Offer》 P94面试题12:打印1到最大的n位数题目:

(●—●) 934

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

面试题12:打印1到最大的N位数

解题思路:方法一:利用数组来存储每一位的数值(0~9)。 总共有N位,每一位的数值可能为0~9中的一个数,其实就是全排列问题,从而可以利用递归的方式求解。递归的结束条件就是已经设置了数字的最后一位的值。package jianzhi; public class Test12 { /** * 输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3 一直到最大的

Mook的博客 503

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【剑指Offer学习】【面试题12 :打印1 到最大的n 位数】

输入数字n,按顺序打印出从1最大的n位十进制数。比如输入3,则打印出1、2、3 一直到最大的3位数即999。

https://github.com/Wang-Jun-Chao 6886

面试题 12: 打印1到最大的n位数

一. 题目输入数字n,按顺序打印出从1到最大的n位十进制数.比如输入3,则打印出1,2,3一直到最大的3位数即999.代码请到我的代码库中下载 Point2Offer二. 代码package ween_2; /**难度系数:**** * 剑指offer: 打印1到最大的n位数 * 方法:注意最大数是有多大?(字符串&递归) * 测试用例:功能测试(正数{121,1,0x7FFFFFFF})

高筑墙,广积粮,缓称王 447

《剑指offer》Java学习录:面试题 12:打印1到最大的n位数

文章目录面试题 12:打印1到最大的n位数题目分析解:java 面试题 12:打印1到最大的n位数 题目 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 分析 如果不作分析,可能直接就会采用:算出n位数的最大值,然后循环输出就完事儿了。但这个题显然不是这么简单,题目中没有给n做任何限定,如果n的值很大,那么不管是double还是long...

SuperLi 467
上一篇: 面试题11:数值的整数次方
下一篇: 面试题13:在O(1)时间 内删除链表节点
SmartBrave
博客等级 码龄12年 25粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值