题目
给定一个自然数,按照如下序列格式输出。
输入: N = 150
输出:
0
1
10
100
101
...
109
11
110
...
119
12
120
...
129
13
130
..
9
90
91
92
93
94
95
96
97
98
解法:
int dump(long long n) {
long long total = 0;
long long begin = 0;
while( total <= n) {
if( begin <=n ) {
cout << begin <<endl;
total++;
if(begin == 0) ++begin;
else begin *= 10;
}
else {
begin = begin/10 + 1;
while(begin != 0 && begin %10 == 0) {
begin /= 10;
}
}
}
return 0;
}
int main() {
long long i = 150;
int ret = dump(i);
return 0;
}
改进输出的循环判断次数:
#include <iostream>
using namespace std;
int dump(long long n) {
long long total = 0;
long long begin = 0;
while( total < n) {
if( begin <=n ) {
cout << begin <<endl;
total++;
if(begin == 0) ++begin;
else begin *= 10;
}
else {
begin = begin/10 + 1;
while(begin != 0 && begin %10 != 0 && begin <=n) {
cout << begin <<endl;
begin ++;
total ++;
}
while(begin%10 == 0) {
begin /= 10;
}
}
}
return 0;
}
int main() {
long long i = 15000;
int ret = dump(i);
return 0;
}