Придумайте натуральное число которое удовлетворяет следущим условиям:1.Запись числа...

0 голосов
85 просмотров

Придумайте натуральное число которое удовлетворяет следущим условиям:
1.Запись числа состоит из 7 цифр
2.Сумма всех цифр числа равна 39.
3.В записи числа есть хотя бы одна цифра 4
4.В записи числа есть хотя бы одна цифра 7
5.Запись числа является палиндромом,то есть одинаково читается как слева направо,так и справа налево
6.Число является максимальным из всех чисел удовлетворяющих пунктам 1-5




Информатика (22 баллов) | 85 просмотров
0

Если это информатика, а не математика, то допускается ли написать программу и решить задачу методом перебора с ограничениями?

Дан 1 ответ
0 голосов
Правильный ответ

Для записи максимального числа необходимо  в наибольшем разряде числа записать самую большую цифру,то есть 9,поскольку это палиндром,то и последняя цифра будет 9.
9+9=18,39-18=21-сумма оставшихся  пяти  цифр.(Если использовать в числе две цифры 7, то сумма оставшихся трех цифр составит 7,а из этих трех цифр две 4 не получится ,а одна не удовлетворяет условие,поскольку на две цифры останется сумма 3.)В этом числе может быть только одна 7,и число выглядит так 9**7**9,а сумма неизвестных четырех цифр-14.
среди этих четырех цифр две 4,тогда сумма двух оставшихся цифр-6,то есть это две 3.Осталось только записать это максимальное число. 9437349.Проверим 9+4+3+7+3+4+9=39

(7.2k баллов)
0

но мы же подбираем максимальное число

0

число начинающееся с 4- 4397934- но оно не будет максимальным

0

4937394, 4871784, 4847484, 4781874, 4773774, 4765674, 4757574,
4749474, 4675764, 4667664, 4577754, 4487844, 4479744, 4397934

0

Я просто хочу понять, насколько корректен первый шаг - положить в старшем разряде цифру 9. Не более того. Само решение мне нравится, но в вот в этом именно месте чувствуется что-то... ну, искусственное.

0

Спасибо,вам большое,за все пояснения с ответом)Но к сожалению это только 1 задание из 4 которое надо решить(

0

корректен первый шаг, программным путём в старшем разряде подбирать от максимального к минимальному

0

Если программным подобрать часть, можно и все программным, разница там небольшая в написании

0

Решение правильно, только стоило начинать его "Давайте попробуем вперед поставить девятку"

0

Если надо - код на руби

0

(9999).downto(1000) {|i|
s = i.to_s()
s = s[0..2] + s.reverse
n = s.to_i

next if not s.include?('7')
next if not s.include?('4')

sum = 0
while n > 0 do
sum += n % 10
n = n / 10
end
next if sum != 39

p s
break;
}