![]() |
|
Модераторы: Alx, Fixin |
![]()
|
|
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Вот такая задачка есть.
Нужно найти в трамвайных билетах "счастливые". Это такие билеты, в которых сумма первых двух цифр равна сумме двух последних цифр (предполагается, что номер билета имеет четыре разряда). Как понятно, придется использовать массив. Элементы массива - от 1 до 9999, т.е. массив объявлен и заполнен вот так:
Воть. Я бы хотел увидеть ваши решения. Я уже решил задачу, и мне хочется сравнить свое решение с вашим (свое пока не выкладываю, чтобы некуда было подглядывать |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
ну, например, так:
Добавлено @ 20:49 совсем необязательно Это сообщение отредактировал(а) maxim1000 - 15.5.2006, 20:49 -------------------- qqq |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Гм... Интересно... Правда, я не совсем понял принцип работы функции SumCount в вашем примере...
Как и обещал, выложу свое решение (я работал с описанным выше массивом):
Мне бы хотелось услышать ваши комментарии по поводу моего кода... Только сильно не бейте, я еще только начал серьезно учить язык. Добавлено @ 19:42 P.S. Пример, конечно, очень плох с точки зрения производительности, но в случае работы с указанным массивом, вроде, только так и можно... maxim1000, а приведите пример не для 18, а для 9999. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
И еще, maxim1000, включите плиз в ваш код функцию main. Не совсем понятен код в целом... И плиз поясните функцию SumCount. Мне кажется, для числа 9999 ее придется немного переделать, хотя я, честно говоря, не понимаю, как.
|
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
упс... неправильно понял задание...
я думал, что надо найти количество счастливых билетиков впрочем, если подумать, то и его я не совсем правильно решил - при добавлении нужно ещё возводить сумму в квадрат ... описание: каждый счастливый билетик можно охарактеризовать суммой его первых двух цифр (она же - сумма других двух) удобно (по крайней мере, это - один из способов) отдельно рассматривать каждую возможную сумму сумма двух цифр может быть 0..18 теперь вопрос: какие могут быть билетики с заданной суммой первых/последних двух цифр? достаточно перебрать все варианты первой пары цифр, а для каждой из них ещё и все варианты второй пары (тут появляется квадрат, который я забыл) как перебирать варианты? в случае с длиной номеров 4 эта задача вообще простая: начинаем с такой пары, в которой первая цифра самая большая, а вторая - самая маленькая для сумм 0..9 это будет пара x0 (x - сумма) для сумм 10..18 - 9y (y=сумма-9) следующую пару можно получить, отняв 1 от первой цифры и добавив её ко второй, останавливаться надо, когда переносить уже некуда - вторая цифра 9 или неоткуда - первая цифра 0 вот и получаем такую процедуру:
Это сообщение отредактировал(а) maxim1000 - 17.5.2006, 20:19 -------------------- qqq |
|||
|
||||
| nostromo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: нет Всего: 10 |
Вариант решения на Smalltalk (не смог удержаться ;) )
--------------------
На пыльных тропинках далеких планет останутся наши следы. |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: 1 Всего: 128 |
Я так и не понял, как же вы разбиваете число на разряды. Ну никак не могу въехать. Понятно, если число двузначное. А если четырех? И сделайте, я просил, для числа 9999, а не 18.
А про мой-то код что можете сказать? Добавлено @ 16:14 nostromo, мы тут про С++... Ваш код мне мало что говорит, поскольку я его не знаю. |
|||
|
||||
| nostromo |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: нет Всего: 10 |
Ну ладно, вот вариант на C++.
Добавлено @ 16:44
В принципе, нормально. Только два замечания: 1. static_cast<int> не нужен. Результат деления целых чисел --- целое число. 2. С точки зрения алгоритма, я бы предпочел получать цифры цисла в цикле вида:
--------------------
На пыльных тропинках далеких планет останутся наши следы. |
||||||
|
|||||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 2 Всего: 110 |
у меня нет функции проверки конкретного числа на "счастливость", у меня просто выводятся все счастливые четырёхзначные числа... поэтому ни для какого конкретного числа таким образом не проверишь... -------------------- qqq |
|||
|
||||
| nostromo |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: нет Всего: 10 |
Идея хорошая, но я бы реализовал примерно так:
Это сообщение отредактировал(а) nostromo - 18.5.2006, 17:15 --------------------
На пыльных тропинках далеких планет останутся наши следы. |
||||
|
|||||
| 666andrey666 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.5.2006 Репутация: нет Всего: нет |
По-моему вот это решение неплохое для чисел от 1 до 9999!!!
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 2 Всего: 454 |
Плохое... как тебе выведется билет номер 0110? а просто 110... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| nostromo |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 194 Регистрация: 23.3.2006 Репутация: нет Всего: 10 |
Мне кажется, что работать будет, 0110 или 110 --- какая разница? Но это решение действительно плохое тем, что негибкое (код сильно завязан на количестве цифр) и неэффективное (по сравнению с вариантом перебора только подходящих билетов). --------------------
На пыльных тропинках далеких планет останутся наши следы. |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 2 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| 666andrey666 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.5.2006 Репутация: нет Всего: нет |
это устранить не тяжело!!!
во всяком случае для таких цифр я задачу решил и пашет она быстро!! я же ведь её решал не для всех случаев жизни!!! |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Интересные и занимательные задачи по программированию | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |