Помощь - Поиск - Пользователи - Календарь
Полная версия: псевдосчастливые числа
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
GrAnna
Привет народ! Все знают решение задачи про количество счастливых билетов,а я хочу предложить задачу о количестве псевдосчастливых чисел.Число является псевдосчастливым ,если сумма любых трех цифр равна сумме оставшихся( ф1+ф2+ф4=ф3+ф5+ф6 и т.д.).Плиз!!! помогите правильно написать на Паскале!
мисс_граффити
Цитата
а я хочу предложить задачу

может, тогда и какие-то идеи реализации предложишь?
у меня 2 мысли, как это реализовать, возникло... но сначала - твоя версия.
Michael_Rybak
Таких чисел - девять: 111111, 222222, ... , 999999. Равенство любых двух цифр доказывается очень легко.
Malice
Цитата(Michael_Rybak @ 27.12.2006 16:22) *

Таких чисел - девять: 111111, 222222, ... , 999999. Равенство любых двух цифр доказывается очень легко.

Опять "великий и могучий" добавил неопределенности. smile.gif Если действительно любых - то 9. Если условие уточнить например так "сумма каких либо 3-х = сумме остальных", то горазно больше..
klem4
А может он имел в виду: сумма первых трех = сумме всех остальных в числе ... Гадать можно оочень долго, автор давай примеры ...
Michael_Rybak
Ну это врядли, т.к. это и есть оригинал:

Цитата
Все знают решение задачи про количество счастливых билетов


Аааа, может типа число 10ти-значное, и сумма первых трех равна остальным lol.gif
klem4
blink.gif

1110000003

?



Добавлено: или как это должно выглядеть ?
Michael_Rybak
Угу smile.gif))
Malice
Я понял так:
123123 - счастливое
112233 - псевдо, т.к. (1+2+3=1+2+3)
136332 - псевдо, т.к. (1+6+2=3+3+3)
yes2.gif
Делайте ставки rolleyes.gif
GrAnna
количество псевдосчастливых билетов среди 000000..999999.варианты псевдосч. билетов: ф1+ф2+ф4=ф3+5+ф6
ф1+ф2+ф5=ф3+ф4+ф6
ф1+ф2+ф6=ф3+ф4+ф5 и тд .
всего 9 вариантов. Я сначала вычисляю кол-во счастливых билетов.из общего числа вычитаем счастливые, в оставшихся ищем псевдосчаст.как лучше записать эти варианты: в лоб или...?
Michael_Rybak
В лоб конечно.

for i := 000000 to 999999 do
begin
вычисляем цифры -> digit[1..6]
вычисляем сумму цифр -> sum
if (digit[1] + digit[2] + digit[3]) * 2 = sum then
//счастливый
continue;
ok := false;
for a := 1 to 6 do
for b := a + 1 to 6 do
for c := b + 1 to 6 do
if (digit[a] + digit[b] + digit[c]) * 2 = sum then
ok := true;
if ok then
Writeln(i);
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.