C語言編程 無重復數字
已知正整數a、b、n滿足a<=b。求出區間【a,b】內,所有滿足以下條件的整數:①該整數由1~n這n個數字中的數字組成。②整數中各個位上的數字互不相同。
輸入3個正整數a,b,n,其中a,b代表所求區間,滿足1<=a<=b<=2000,且1<=n<=9。輸出滿足條件的整數,每5個數為一行,整數之間用tab分隔,最後一個數後為換行符。當沒有符合條件的整數時,輸出“There is no proper number in the interval.”。
程序運行效果:
sample 1:
Please input there integers:200 500 4
The result is:
213 214 231 234 241
243 312 314 321 324
341 342 412 413 421
423 431 432
sample 1:
Please input there integers:1000 2000 3
There is no proper number in the interval.
最佳回答:
#include <stdio.h>
int unique(int num, int n)
{
int a[10] = {0};
while (num)
{
int bit = num % 10;
num /= 10;
if (bit == 0 || bit > n)
return 0;
else
{
if(a[bit])
return 0;
else
a[bit] = 1;
}
}
return 1;
}
int main()
{
int min, max, n, i;
int count = 0;
scanf("%d %d %d", &min, &max, &n);
for (i = min; i <= max; i++)
{
if (unique(i, n))
{
count++;
printf("%d ", i);
if (count % 5 == 0)
printf("\n");
}
}
printf("\n");
return 0;
}