Почему я не могу вывести вывод в виде количества уникальных цифр между диапазонами от n1 до n2?

#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:

Очень трудно прочитать ваш код. Вам нужно правильно сделать отступ — это вам очень поможет.

  1. Используйте функции.
  2. Не всегда 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));
}