-
Description:
-
Given a number N, print the N digits from 1 to the maximum.
-
Input:
-
Each input file contains only one set of test samples.
For each test case, enter a number N (1 <=n <= 5 ).
-
Output:
-
For each test case, the number of N digits from 1 to the maximum is printed in sequence.
-
Sample input:
-
1
-
Sample output:
-
123456789
Solution 1:
void func(int n){if(n<=0){return;}int i = 0,max = 1;while(i++ < n){max *= 10;}for(i = 1; i < max; i++){cout<<i<<endl;}}
Unfortunately, this solution is not feasible. If n is too large, it will overflow. (This question does not overflow, but it will time out)
Solution 2: ---> pass
# Include <stdlib. h> # include <stdio. h> # include <string. h> bool increment (char * Number) {bool isoverflow = false; // overflow flag int takeover = 0; // carry int Len = strlen (number ); for (INT I = len-1; I> = 0; I --) {int nsum = number [I]-'0' + takeover; if (I = len-1) // if it is a single digit {nsum ++;} If (nsum> = 10) // generate carry {if (I = 0) // carry the highest digit {isoverflow = true;} else {nsum-= 10; takeover = 1; number [I] = nsum + '0 ';}} else // No carry {number [I] = nsum +' 0'; break ;}} return isoverflow;} void printnumber (char * Number) {bool flag = true; int I = 0; while (number [I]! = '\ 0') {If (flag & number [I]! = '0') {flag = false;} If (! Flag) {printf ("% C", number [I]);} I ++;} printf ("\ n");} void func (INT N) {If (n <= 0) {return;} Char * number = (char *) malloc (sizeof (char) * (n + 1); If (! Number) {return ;}for (INT I = 0; I <n; I ++) {number [I] = '0 ';} number [N] = '\ 0'; while (! Increment (number) {printnumber (number);} Free (number) ;}int main () {int N; scanf ("% d", & N ); func (n); Return 0 ;}
Solution 3: ----> recursive
#include<stdio.h>#include<stdlib.h>#include<string.h>void PrintNumber(char *number){bool flag = true;int i = 0,count = 0;while(number[i] != '\0'){if(number[i] == '0'){count++;}if(flag && number[i] != '0'){flag = false;}if(!flag){printf("%c",number[i]);}i++;}if(count != strlen(number))printf("\n");}void func1(char *number,int length,int index){if(index == length - 1){PrintNumber(number);return;}for(int i = 0; i < 10; i++){number[index+1] = '0' + i;func1(number,length,index+1);}}void func(int n){if(n <= 0){return;}char *number = (char*)malloc(sizeof(char)*(n+1));if(!number){return;}int i = 0;for(i = 0; i < n; i++){number[i] = '0';}number[n] = '\0';for(i = 0; i < 10; i++){number[0] = i+'0';func1(number,n,0);}free(number);}int main(){int n;scanf("%d",&n);func(n);return 0;}