Еще один арифметический пример

1. scientes 289 12.12.22 09:45 Сейчас в теме
Найти 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,Число,Статистика);
	
КонецФункции


Показать
По теме из базы знаний
Найденные решения
2. user1863362 12.12.22 10:56 Сейчас в теме
Обозначим цифры числа слева направо: 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.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1863362 12.12.22 10:56 Сейчас в теме
Обозначим цифры числа слева направо: 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.
3. scientes 289 12.12.22 14:31 Сейчас в теме
(2) Да, это похоже на решение. Нашел алгебраический пример ABCDEF × 3 = BCDEFA. Решается без программирования, но с калькулятором.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот