面试题12:打印1到最大的n位数
// 面试题12_打印1到最大的n位数.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std; bool Increment(char *number)
{
bool isOverflow=false;
int nTakeOver=;
int nLength=strlen(number); for(int i=nLength-;i>=;--i)
{
int nSum=number[i]-''+nTakeOver;
if(i==nLength-)
nSum++; if(nSum>=)
{
if(i==)//若是首位满10,则到了最大的n位
isOverflow=true;
else
{
nSum-=;
nTakeOver=;//若满10则上一位加1
number[i]=''+nSum;
}
}
else
{
number[i]=''+nSum;
break;
}
}
return isOverflow;
} void PrintNumber(char *number)
{
bool isBeginning0=true;
int nLength=strlen(number);
for(int i=;i<nLength;++i)
{
if(isBeginning0&&number[i]!='')
{
isBeginning0=false;
}
if(!isBeginning0)
{
cout<<number[i];
}
}
cout<<"\t";
} void Print1ToMaxOfNDigits(int n)
{
if(n<=)
return; char *number=new char[n+];
memset(number,'',n);
number[n]='\0'; while(!Increment(number))
{
PrintNumber(number);
}
delete []number;
} int _tmain(int argc, _TCHAR* argv[])
{
Print1ToMaxOfNDigits();
return ;
}
字符串是一个简单、有效的表示大数的方法。
面试题12:打印1到最大的n位数的更多相关文章
- 剑指offer编程题Java实现——面试题12打印1到最大的n位数
题目:打印1到最大的n位数 输入数字n,按顺序打印输出从1到最大的n位十进制数,比如输入3,打印从1到999. 这道题考察的地方是如何表示大数问题.由于n是任意大的数组,如果n太大的话n位数就超过了l ...
- 剑指Offer:面试题12——打印1到最大的n位数(java实现)
问题描述: 输入数字n,按顺序打印出从1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的3位数即999. 思路1:最简单的想法就是先找出最大的n位数,然后循环打印即可. public ...
- 《剑指offer》面试题12 打印1到最大的n位数 Java版
书中方法:这道题的一个陷阱在于不能用int或者long去存储你要打印的数,然后用打印函数打印,因为这个数可能会很大.如果加1后超出了最大的n位数,就不打印了.用最高位是否进位判断是否结束,打印的时候注 ...
- 剑指offer-面试题12.打印1到最大的n位数
题目:输入数字n,按照打印出从1最大的n位10进制数.比如3,则 打印出1.2.3一直到最大的3位数即999 1.你觉得如果面试会有这么简单的题,那 只能说明你---太天真. 2.n=3尚可,如果n= ...
- 题目12 打印1到最大的n位数
///////////////////////////////////////////////////////////////////////////////////// // 2.打印1到最大的n位 ...
- 12 打印1到最大的n位数
输入数字 n,按顺序打印出从 1 最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数即 999.由于 n 可能会非常大,因此不能直接用 int 表示数字,而是用 cha ...
- 《剑指offer》面试题12:打印1到最大的n位数
面试题12:打印1到最大的n位数 剑指offer题目12,题目如下 输入数字n,按顺序打印出1到最大的n位十进制数,比如输入3,则打印出1,2,3一直到最大的三位数999 方法一 和面试题11< ...
- 【面试题012】打印1到最大的n位数
[面试题012]打印1到最大的n位数 大数问题 字符串中的每一个字符都是‘0’到‘9’之间的某一个字符,用来表示数字中的一位,因为数字最大是n位的,因此我们需要一个长度为n+1的字符串,字符串的最后 ...
- 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
用字符串或者数组表示大数是一种很简单有效的表示方式.在打印1到最大的n为数的问题上采用的是使用数组表示大数的方式.在相关题实现任意两个整数的加法.减法.乘法的实现中,采用字符串对大数进行表示,不过在具 ...
随机推荐
- MyBatis缓存禁用失败
问题:MyBatis缓存无法禁用,同一个session的select查询结果一样,但是数据库其实已改变. 尝试达到想要的目的: 1.msgmapper.xml里的select标签加上 <sele ...
- css学习笔记 10
一个竖向导航,假设ul宽度为100px,li不浮动,在各浏览器下都会正常显示,当li左浮动时,在标准浏览器下,li会横向排列,如果第一行的剩余空间的宽度不够下一个li,下一个li自动换到第二行,第二行 ...
- 收集C#常用类:对图片的处理操作
using System; using System.Collections; using System.IO; using System.Drawing; using System.Drawing. ...
- 解决xftp远程连接中文乱码
更改乱码服务器的属性,使用UTF-8编码
- Java—多线程编程
一个多线程程序包含两个或多个能并发运行的部分.程序的每一部分都称作一个线程,并且每个线程定义了一个独立的执行路径. 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程.一个线程不能独立的存 ...
- windows下登录lunix服务器
在微信项目中,负责发布,我就把我用到的记录一下.有两种登录方式,看你要做什么操作. 1.SecureCRT 支持命令行操作.(主要是发布程序) 调试.微信公众号规定要有服务器的网址,一般公司的都是内网 ...
- Swiper说明&&API手册 【中文手册Swiper】
原文地址:http://www.cnblogs.com/scavengers/p/3760449.html 示例: <link rel="stylesheet" href= ...
- 根据屏幕大小动态设置字体rem
1.根据屏幕大小动态设置字体rem var docEl = document.documentElement, //当设备的方向变化(设备横向持或纵向持)此事件被触发.绑定此事件时, //注意现在当浏 ...
- RPM
1.安装RPM 使用-ivh选项即可,能查看安装信息和进度. 例如: #RPM -ivh XXX.rpm RPM升级与更新,使用-Uvh选项或者-Fvh选项,两者略有区别. -Uvh选项:后面接的软件 ...
- 【工具】【电子设计】超屌的 fritzing 新建元件
fritzing 有多好,用了才知道,但是通常会遇到一个问题,他的元件库不一定够用,这时候就得自己做元件了,但是搜了一下网上没有相关的教程啊. 算了,去官网看英文吧.. 首先在最新版本不支持直接新建元 ...