输出1到最大的N位数(运算)
题目:输入数字n,按顺序输出从1最大的n位10进制数。比如输入3,
则输出1、2、3一直到最大的3位数即999。
思路:当N较大时候,就已经溢出了,所以这是个大数问题,可以参见
http://blog.youkuaiyun.com/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;
}