微软100题(65)输出1到最大的N位数(运算)
2015-06-03 11:47
519 查看
输出1到最大的N位数(运算)
题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,
则输出1、2、3一直到最大的3位数即999。
思路:当N较大时候,就已经溢出了,所以这是个大数问题,可以参见 http://blog.csdn.net/liuqing0517/article/details/46008697
每次加一输出
加法程序:
题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,
则输出1、2、3一直到最大的3位数即999。
思路:当N较大时候,就已经溢出了,所以这是个大数问题,可以参见 http://blog.csdn.net/liuqing0517/article/details/46008697
每次加一输出
加法程序:
string AddString(string str1 ,string str2) { if(str1.length()<str2.length()) swap(str1,str2); int len1 = str1.length(); int len2 = str2.length(); reverse(str1.begin(),str1.end()); reverse(str2.begin(),str2.end()); vector<int> vec(len1+1,0); int i,k,p; for (i=0;i<len1;++i) { if(i<len2) vec[i] = (str1[i]-'0')+(str2[i]-'0'); else vec[i] = str1[i]-'0'; } for (i=0;i<len1;++i) { vec[i+1] +=vec[i]/10; vec[i] = vec[i]%10; } for (p=vec.size()-1;p!=-1;p--) if(vec[p]!=0) break; if(p==-1) p=0; string res(p+1,'0'); for (k = p;k>=0;--k) res[p-k] = char(vec[k]+'0'); return res; }打印1——最大N位数
void PrintMaxN(int N) { string maxnum(N,'9'); string temp("1"); while (temp!=maxnum) { cout<<temp<<endl; temp = AddString(temp,"1"); } cout<<maxnum<<endl; }
相关文章推荐
- VS2010调试 --指南 Reference from : http://blog.csdn.net/kingzone_2008/article/details/8133048
- 二叉树的存储结构
- VIM最常用的几个命令
- 使用 WPF+ ASP.NET MVC 开发 在线客服系统 (一)
- 一个离职者看待前公司的一些问题
- php面向对象(OOP)—什么是面向对象
- Main函数中参数argc,argv说明
- 镜像紧急恢复
- SQLServer2008 字符串函数一览表
- CoreData数据库搭建
- Python捕捉和模拟鼠标事件的方法
- Eclispe远程调试sqoop
- Nginx+PHP-FPM优化技巧总结
- left join用法
- C#开源大全--汇总(转)
- 'XXX' was not declared in this scope
- 全文索引(三)lucene 分词器 Analyzer
- #leetcode#Median of Two Sorted Arrays
- Hadoop源代码分析(MapTask辅助类,III)
- Nginx反向代理和负载均衡部署指南