Форум программистов, компьютерный форум CyberForum.ru

Все числа X с N-ым количеством неповторяющихся цифр - C++

Восстановить пароль Регистрация
 
deki
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 5
21.03.2011, 13:48     Все числа X с N-ым количеством неповторяющихся цифр #1
Доброе время суток. С Паскаля перехожу на C/C++ и по сути это первая задача которую мне предстоит решить. Задача: Ввести число N и вывести все N значные числа с разными цифрами тоесть, если N=1,то 0 1 2 3 4 5 6 7 8 9. Если N=2, то 10 12 13 14 15 16 17 18 19 20 21 23.....и тд.
Вот в чем проблема, после Паскаля я всё ещё думаю по его логике. На Паскале эта задача бы решилась за 3 минуты, создаем множество, от числа "отсекаем" по последней цифре и и сравниванием в множестве есть это число или нет, если нету то добовляем в множество, если есть, то отмечаем не печатать его.
Для Си мое решение (кода еще нету), делаем массив из 10 элементов (0..9) в котором будет храниться Тру или Фолсе. Превращаем все в Фолсе. "Отсекаем" последнию цифру(допустим в х=последня цифра).
Проверяем массив[x] из тру? Нет? Делаем тру. Да? Отмечаем не петать.
Мой способ решения на Си выглядит слишком сложный по сравнению с паскалем, хотя по сути я пытаюсь тот же способ присвоить Си, вот в этом и проблема. Может кто прокоментировать или описать способ более пригодный для Си. Понимаю что много букавок но может кто осилит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2011, 13:48     Все числа X с N-ым количеством неповторяющихся цифр
Посмотрите здесь:

Дано натуральное число N. Найти и вывести все числа в интервале от 1 до N-1, у которых произведение цифр совпадает с произведением цифр данного числа C++
C++ Даны числа m и n. Получить все натуральные числа,меньшие n, квадрат суммы цифр которых равен m
Даны числа m и n, получить все натуральные числа,меньшие n, квадрат суммы цифр которых равен m C++
C++ В заданном массиве натуральных чисел заменить все числа на такие числа, которые получаться из исходного записью его цифр в обратном порядке
C++ Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9
Дан целый массив. выяснить имеются ли в нем числа, состоящие только из четных цифр. Если да, то вывести все найденные числа и их порядковые номера C++
C++ Найти все четырёхзначные числа, у которых сумма крайних цифр равна сумме средних цифр, а само число делится на 6 и 27
C++ Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2, 3, 4, 5, 6, 7, 8, 9

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
21.03.2011, 15:42     Все числа X с N-ым количеством неповторяющихся цифр #2
Вызов принят!
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
char c[10];
for(i=1, k=1; i<n; i++) k *= 10;
kend = k*10;
for(i=k; i<kend; i++) {
  memset(c, 0, 10);
  m = i;
  while(m!=0) {
     cc= m%10;
     if (c[cc]) break;
     c[cc] = 1;
     m /= 10;
  }
   if (m!=0) continue;
   printf("%d\n", i);
}
Числа могут большие, их лучше делать как long. int не на всех платформах достаточно велик.
А вообще-то мне этот алгоритм не нравится. Слишком много пустых прогонов.
Может быть пойти другим путем - комбинаторным.
Генерировать перестановки из n элементов, потом сгенерить все монотонные инъекции n элементов в
множество { 0..9 }.
Или даже сразу генерить все инъекции.
Но это уже другая задача.
Yandex
Объявления
21.03.2011, 15:42     Все числа X с N-ым количеством неповторяющихся цифр
Ответ Создать тему
Опции темы

Текущее время: 12:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru