Найти 10-начное число, в котором цифра на первом месте равна количеству 0 в числе, цифра на втором месте равна количеству 1,цифра на третьем месте равна количеству 2,..., цифра на 10 месте равна количеству 9. Решил с помощью рекурсии. Впрочем, это должно решаться обычными рассуждениями.
Функция РекурсияНайтиЧисло(поз,СуммаЦифр,Число,Статистика)
если поз=10 тогда
//Статистика и число должны равняться
для i=0 по 9 цикл
если Число[i]<>Статистика[i] тогда
возврат 0;
конецесли;
конеццикла;
сообщить(СтрСоединить(Число,""));
возврат 1;
конецесли;
если поз=0 тогда
imin=1;
иначе
imin=0;
конецесли;
для i=imin по 9 цикл
нСуммаЦифр=суммаЦифр+i;
если нСуммаЦифр>10 тогда
прервать;
конецесли;
если i<поз и (Статистика[i]+1)>Число[i] тогда
продолжить;
конецесли;
Число[поз]=i;
Статистика[i]=Статистика[i]+1;
РекурсияНайтиЧисло(поз+1,нСуммаЦифр,Число,Статистика);
Статистика[i]=Статистика[i]-1;
конеццикла;
конецФункции
Функция НайтиЧисло() экспорт
// сумма цифр равна 10
Число =новый массив;Статистика=новый массив;
для i=0 по 9 цикл
Число.Добавить(0);
Статистика.Добавить(0);
конеццикла;
РекурсияНайтиЧисло(0,0,Число,Статистика);
КонецФункции
ПоказатьПо теме из базы знаний
Найденные решения
Обозначим цифры числа слева направо: A1, A2, A3, ..., A9, A10. Число десятизначно, а из условия следует, что сумма его цифр равна числу его знаков: A1+A2+...+A10=10; кроме того, A1 не равно 0, т.е. A1 >= 1. Обозначим A1=k. По условию, среди цифр числа ровно k нулей, значит, эти нули и цифра k занимают k+1 разряд в числе, а сумма этих цифр равна k (на 1 меньше их количества). Поэтому оставшиеся 10-(k+1)=9-k цифр (заведомо не нули) в сумме дают 10-k, т.е. сумма этих цифр на единицу больше их количества, что возможно лишь, если одна из этих цифр есть 2, а остальные 8-k цифр - единицы. Итак, A1=k, A2=8-k, A3=1, откуда A1+A2+A3=9, значит, A4+A5+A6+A7+A8+A9+A10=1, т.е. среди семи последних цифр одна единица, остальные шесть - нули. Итак, среди цифр числа 6 нулей, одна двойка, одна шестерка (количество нулей) и несколько единиц, которых, таким образом, оказалось две, т.е. искомое число 6210001000.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Обозначим цифры числа слева направо: A1, A2, A3, ..., A9, A10. Число десятизначно, а из условия следует, что сумма его цифр равна числу его знаков: A1+A2+...+A10=10; кроме того, A1 не равно 0, т.е. A1 >= 1. Обозначим A1=k. По условию, среди цифр числа ровно k нулей, значит, эти нули и цифра k занимают k+1 разряд в числе, а сумма этих цифр равна k (на 1 меньше их количества). Поэтому оставшиеся 10-(k+1)=9-k цифр (заведомо не нули) в сумме дают 10-k, т.е. сумма этих цифр на единицу больше их количества, что возможно лишь, если одна из этих цифр есть 2, а остальные 8-k цифр - единицы. Итак, A1=k, A2=8-k, A3=1, откуда A1+A2+A3=9, значит, A4+A5+A6+A7+A8+A9+A10=1, т.е. среди семи последних цифр одна единица, остальные шесть - нули. Итак, среди цифр числа 6 нулей, одна двойка, одна шестерка (количество нулей) и несколько единиц, которых, таким образом, оказалось две, т.е. искомое число 6210001000.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот