n位不重复的数字
今天的数学课让你感到很无聊。于是你打算在纸上写下所有n位不含重复数字的数,来打发时间。例如:你打算写6位数,那么你会写下127643;而123347含重复的3,你不会写下它。你决定由小到大写出每个数,并且你不会考虑含前导0的n位数。输入输入一个数n,表示你打算写n位数。输出每行输出一个数,表示你所写下的n位数。数据范围对于100%的数据,1≤n≤8;输入样例1输出样例1 2 3 4 5 6 7 8 9
51nod的题,最后一个点可能会超时,采纳一下谢谢
#include<iostream>
#include<cstdio>
using namespace std;
int main() {
int n=0,a=0,b=0;
scanf("%d",&n);
if(n==1) a=1,b=9;
if(n==2) a=10,b=98;
if(n==3) a=102,b=987;
if(n==4) a=1023,b=9876;
if(n==5) a=10234,b=98765;
if(n==6) a=102345,b=987654;
if(n==7) a=1023456,b=9876543;
if(n==8) a=10234567,b=98765432;
for(int i=a; i<=b; i++) { //遍历所有n位数
int arr[10]= {0};
int index=0,num=i,flag=1;
while (num>0) {
index = num % 10;
if (arr[index]) {
flag=0;
break;
}
arr[index]=1;
num/=10;
}
if(flag
printf("%d ",i);
}
return 0;
}
下一篇:vba获取上一个选择的单元格地址