数很大时,long long 也存不下,可以考虑用 字符串。
N位数,每个位置上有9中情况,全排列。
前面为0的不输出:
#include<iostream>
#include<string.h>
#include<string>
#include<cstring>
using namespace std;
void print_big(char *num)
{
bool flag = false;
int n = strlen(num);
for (int i=0;i<n;i++)
{
if (flag==false && num[i]!=0)
{
flag = true;
}
if (flag)
{
printf("%c",num[i]);
}
}
printf("\n");
}
void Print1ToNRecursively(char *num, int n, int index)
{
if (index==n-1)
{
print_big(num);
return ;
}
for (int i=0;i<10;i++)
{
num[index+1] = '0' + i;
Print1ToNRecursively(num,n,index+1);
}
}
void Print1ToN(int n)
{
if (n<=0)return;
char *num = new char[n+1];
memset(num,'0',sizeof(char)*n);
num[n] = '\0';
for (int i=0;i<10;i++)
{
num[0] = '0' + i;
Print1ToNRecursively(num,n,0);
}
delete []num;
return ;
}
int main()
{
int n;
cin>>n;3
Print1ToN(n);
getchar();
getchar();
return 0;
}