![]() |
|
|
![]()
|
|
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
Доброе время суток. При подготовке к олимпиаде столкнулся со следующей задачей:
Группа студентов является членами клуба, который ежегодно путешествует в различные места. Группа заранее договорилась делить расходы поровну, но не удобно делить расходы по мере поступления. Поэтому каждый студент в отдельности платит за определенные вещи. После путешествия расходы суммируются, и происходит обмен деньгами так, что итоговая стоимость для всех оказывается равной с точностью до одного цента. Требуется найти то количество денег которое должно поменять хозяина для того чтобы расходы уравнялись с точностью до одного цента. Пример входных данных 4 15.00 15.01 3.00 3.01 первая строка - кол-во студентов Последующие строки - расход отдельного студента. Привожу свой код решения
Если использовать данные которые я привел в примере входных данных то получается (в программе) 12.00 Но на самом деле ответ 11.99. Я понимаю что вся неточность начинается после вычисления среднего арифметического 9.005 - пол цента. Подскажите как исправить алгаритм? Это сообщение отредактировал(а) Vermaxt - 8.3.2010, 15:47 |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
это какой-то новый способ подсчета среднего арифметического? Паскаль я подзабыл, так что извиняйте, пишу на C++
|
|||
|
||||
| Vermaxt |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
Не понял ваше замечание.
Это сообщение отредактировал(а) Vermaxt - 8.3.2010, 14:36 |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
А как вы решите проблему задачи без знания того сколько потратил каждый студент? |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
а вы посмотрите, я же ее решил. извиняюсь, это решение первой части задания, не заметил, что надо считать количество возвращаемой суммы. сейчас исправлю Это сообщение отредактировал(а) azesmcar - 8.3.2010, 15:19 |
|||
|
||||
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
azesmcar, Да, наверное это я не достаточно ясно описал условия. Требуется найти то количество денег которые должны поменять хозяина для того чтобы у всех стало поровну денег. А не вычислить то сколько должен потратить каждый.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Vermaxt
А почему вы решили что правильный ответ не 12? Один заплатил больше на 6.005 а другой на 5.995, в итоге 12, все честно. Это сообщение отредактировал(а) azesmcar - 8.3.2010, 19:45 |
|||
|
||||
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
azesmcar, Поверьте люди в Univeersidad de Valladolid не ошибаются.
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Я никому не верю, и уж тем более организациям с непроизносимым названием Я хочу понять, с чего вдруг ответ должен быть 11.99, вы можете это объяснить? Студенты заплатили 15 15,01 3 3,01 в сумме они потратили 36.02 вчетвером, т.е. по честному каждый из них должен был потратить 9.005. 1-ые два студента потратили больше, вторые два - меньше
вторым двум надо вернуть первым двум в сумме 12. Где ошибка в логике? |
||||
|
|||||
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
azesmcar, А теперь вопрос как каждый из двух первых студентов отдаст по пол цента? Разве существует такая монета? Если они "договорятся" мол отдай за меня пол цента я тебе потом куплю жвачку то ладно. Собственно что я хочу сказать равенство нарушится если один из студентов доплатит пол цента за другого.
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
Vermaxt
Логика проста, каждый должен был заплатить 9,005 (т.е. 9$ и пол цента), это среднее арифметическое, тут ошибок быть не может, в задании нигде не сказано, что пол цента передавать нельзя, и к тому же вы не должны решать чужие проблемы, вам надо выяснить число - вы выяснили, по честному будет 9,005, как они будут эти деньги делить - проблема не ваша. Это сообщение отредактировал(а) azesmcar - 8.3.2010, 16:51 |
|||
|
||||
| Vermaxt |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 4.8.2007 Репутация: нет Всего: нет |
Господа, и все же тема остается открытой. У кого есть какие мысли высказываем!
|
|||
|
||||
| kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: нет Всего: 160 |
Господа усе в Вальядолиде. Как вариант - округлять полученное среднее арифметическое до целого или до числа с плавающей точкой но только с 2-мя знаками после запятой. До целого так:
-------------------- |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
если округлить - 4 * округленное среднее арифметическое в итоге выйдет больше/меньше чем они потратили Куда же девать лишний цент? Предлагаю пустить на благотворительность... ну или пусть перечисляют мне, с каждого запуска программы по центу - я быстро разбогатею |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |