题解 | 小红的好数,c语言代码实现,质朴代码
小红的好数
https://www.nowcoder.com/practice/de234d0d61d549c6a436e9509dbeea11
#include <stdio.h>
int main() {
int a[5];
long long x;
int flag = 0;
int k = 0;
long long haoshu[100000]={0};//赋初值好习惯
for (long long x = 99999; x >= 0; x--) {
long long temp = x;//不要改变x的值,因为x在for循环中,少修改
flag=0;//注意重置flag
while (temp) {
for (int i = 0; i < 5; i++) {
a[i] = temp % 10;
temp /= 10;
}
}
for (int i = 0; i < 4; i++) {
for (int j = i + 1; j <= 4; j++) {
if (a[i] == a[j]) {
flag = 1;
break;
}
}//用一个大小为5的数组来存储所有位置
if (flag == 1)//如果存在相同数位,就跳出循环
{
break;
}
}
if(flag==0)
{
k++;
haoshu[k]=x;
}
}
int m;
scanf("%d",&m);//注意此处scanf要在k=m前面,不然k永远赋初值0
k=m;
printf("%05lld",haoshu[k]);//用百分号0xlld可以输出需要的前导0
return 0;
}