- 题目描述:
- 给定一个数字N,打印从1到最大的N位数。
- 输入:
- 每个输入文件仅包含一组测试样例。
对于每个测试案例,输入一个数字N(1<=N<=5)。
- 输出:
- 对应每个测试案例,依次打印从1到最大的N位数。
- 样例输入:
-
1
- 样例输出:
-
1 2 3 4 5 6 7 8 9
题意:如题。九度上非大数,原意为大数(n不限制).由于只有一组,因此每次输入一个n,处理一次。
否则,可以利用二维数组,或者字符串数组string[ MAX ]。第一维表示第几个数,第二维表示相应的数(错误理解,第一维能存的话,就不是大数了,适用于非本题题意的大数处理);
非大数:/* *********************************************** Author :bo-jwolf Created Time :2015年02月09日 星期一 19:35:27 File Name :1515.cpp ************************************************ */ #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; while( scanf( "%d", &n ) != EOF ){ long long number = pow( 10, n ); for( int i = 1; i < number; ++i ){ printf( "%d\n", i ); } } return 0; }
大数:
/* *********************************************** Author :bo-jwolf Created Time :2015年02月09日 星期一 19:38:49 File Name :1515a.cpp ************************************************ */ #include <stdio.h> #include <string.h> #include <iostream> #include <algorithm> #include <vector> #include <queue> #include <set> #include <map> #include <string> #include <math.h> #include <stdlib.h> #include <time.h> using namespace std; const int MAX = 1005; string str; int num[ MAX ], k = 0, n; void Deal( int *num ){ int i = 0; num[ i ]++; while( num[ i ] > 9 ){ num[ i + 1 ]++; num[ i ] %= 10; i++; } // cout << num[ k ] << endl; } void Print( int *num ){ // cout << num[ k ] << endl; k = n; while( !num[ k ] ) k--; for( int i = k; i >= 0; --i ){ printf( "%d", num[ i ] ); } printf( "\n" ); } int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); while( scanf( "%d", &n ) != EOF ){ memset( num, 0, sizeof( num ) ); int k = 0; num[ 0 ] = 0; while( true ){ Deal( num ); if( !num[ n ] ) Print( num ); else break; } } return 0; }