#c
Вопрос:
Дано два неотрицательных целых числа n1 и n2, где n1 Задача состоит в том, чтобы найти общее количество целых чисел в диапазоне [n1, n2](оба включительно), у которых нет повторяющихся цифр.
Я разработал логику, но вывод все еще неправильный.
int main(void) {
int n1, n2, count = 0, num;
scanf("%d %d", amp; n1, amp; n2);
for (int i = n1; i <= n2; i ) {
int num = i;
bool m[10] = {
false
};
while (num > 0) {
if (m[num % 10] == true) {
break;
m[num % 10] = true;
num = num / 10;
}
}
}
if (num == 0) {
count ;
}
printf("%d", count);
return 0;
}
Комментарии:
1. Код окружен обратными указателями (
`
), а не кавычками. Но вам все равно нужно поработать над своим отступом.2. Кроме того, это не лучший способ решить эту проблему. Что, если цифры действительно большие?
3. Пожалуйста, сделайте себе одолжение и сделайте правильный отступ ( это действительно очень помогает )
4. Исправьте свой отступ, и ошибка должна быть очевидной.
Ответ №1:
Очень трудно прочитать ваш код. Вам нужно правильно сделать отступ — это вам очень поможет.
- Используйте функции.
- Не всегда
bool
это лучший выбор.
int hasRepeating(long long num)
{
int dig[10] = {0,};
do
{
if( dig[abs((int)(num % 10))] > 1) return 1;
num /= 10;
}while(num);
return 0;
}
size_t findNumber(long long num1, long long num2)
{
size_t num = 0;
for(long long x = num1; x <= num2; x )
{
if(!hasRepeating(x)) num ;
}
return num;
}
int main(void)
{
int num1 = -9000, num2 = 100000;
printf("Number of numbers with not repeated digits in range <%d, %d> = %zun", num1, num2, findNumber(num1, num2));
}