Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Разминался сегодня и решал несложную задачу: ЗАДАНИЕ Главный вождь племени Абба не умеет считать. В обмен на одну из его земель вождь другого племени предложил ему выбрать одну из трех куч с золотыми монетами. Но вождю племени Абба хочется получить наибольшее количество золотых монет. Помогите вождю сделать правильный выбор! Входные данные: В первой строке входного файла INPUT.TXT записаны три натуральных числа через пробел. Каждое из чисел не превышает 10^100. Выходные данные: В выходной файл OUTPUT.TXT нужно вывести одно целое число — максимальное количество монет, которые может взять вождь. Совсем простая, но я загружаю её на сервер, и на первом тесте Wrong Answer, хотя когда я проверяю на своей машине, всё нормально. Я сначала подумал что у меня неправильный алгоритм, но почитал, и остальные сравнивают большие числа аналогичным образом. Вот код: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. Подскажите пожалуйста, что я упускаю ? PS Это мне не нужно ни для какого участия в конкурсе, не подумайте. Просто я каждый день решаю как минимум 2 задачи, и вот наткнулся на эту. Вот ссылка на неё тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 10:04 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Я немного подправил твой пост, добавил оригинальное условие. И всё же -- оно шизонутое. "нужно вывести одно целое число — максимальное количество монет, которые может взять вождь." Блин, нужно просто найти максимум из трёх этих чисел, а не "которое может взять вождь". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 10:57 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Сразу -- зачем тебе этот POW ? Это же кол-во цифр в числе, т.е. длина строки. как делал бы я: убрал лидирующие нули, если они есть. вычислил длины строк, если какая-то с болшей длиной -- это искомое максимальное число. если длины хотя бы двух чисел одинаковы, то надо отбросить число с меньшей длиной и сравнивать оставшиеся. сравнение делается просто посимвольно, начиная со старших разрядов. Если разряд больше или меньше -- у нас есть победитель (максимум), если равны -- берём следующий разряд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 11:04 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Потом, зачем такие сложности с вводом ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 11:19 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. input.txt Код: plaintext 1. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 11:45 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Так я и не понял, что у тебя не так. Я бы сказал, не так ВСЁ, но вроде бы твоя программа ДОЛЖНА всёже работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 11:56 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСовсем простая, но я загружаю её на сервер, и на первом тесте Wrong Answer, хотя когда я проверяю на своей машине, всё нормально. А какой первый тест? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 14:16 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 14:49 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Немного ещё улучшил, чтобы не менять кол-во входных чисел всё время. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 15:11 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Задача действительно "шизанутая". Она даже плохо привязывается к знаниям арифметики у древних. Золото можно достаточно точно взвешивать на чашечных весах и определять где больше. Гораздо более интересные на мой взгляд задачи древней арифметики. Налоги в древнем Риме. Учёт процентов в Римской системе счисления. Вавилонская система счисления. Таблица Пифагора для нее. Вопросы запоминания базовых операций. Расчёты на абаке. На соробане. Вопросы умножения и деления. Система счисления Фибоначчи. Какие профиты? Геометрия землемеряния. Классические задачи прямых углов и деления угла на равные части (2,3,5 e.t.c) Морская навигация древних. Картография. Берите любую задачу и я с удовольствием тоже включусь в нее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 16:58 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
maytonЗадача действительно "шизанутая". Она даже плохо привязывается к знаниям арифметики у древних. Да задача-то нормальная, нахрена было только выдумывать каких-то вождей и какое-то золото? Всё же просто: найти максимальное число из нескольких натуральных чисел не более 10:100. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 17:48 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Ну да. Но условие при котором число достигает 10^100 предполагает символьную арифметику. По сути - лексикографическое сравнение двух строк если разрядность одинакова или тривиальную оценку размера если одна строка больше по длине. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 17:51 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZivДа задача-то нормальная, нахрена было только выдумывать каких-то вождей и какое-то золото? Сделай поправку что ИТ-мозг изобретал для подростков, похоже фантазии за рамками программирования не много, как говорится "хотели как лучше, получилось как всегда". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 18:05 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
1. Если так: SashaMercury я загружаю её на сервер, и на первом тесте Wrong Answer, хотя когда я проверяю на своей машине, всё нормально. тогда возможно, что input.txt содержит какие-то символы после цифр перед EOF. Предлагаю тогда уже проверять не на равенство пробелу, а на непринадлежность символа диапазону кодов десятичных цифр: 0x30-0x39. 2. По правилам оформления должно быть freopen("input.txt","r",stdin);? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 20:17 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZivДа задача-то нормальная, нахрена было только выдумывать каких-то вождей и какое-то золото?потому что в реальной жизни постановки ещё более сумасшедшие, а то что "Всё же просто: найти максимальное число из нескольких натуральных чисел не более 10:100" понимаешь только после пары дней активного мозгового штурма ;-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.07.2014, 22:05 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZivНемного ещё улучшил, чтобы не менять кол-во входных чисел всё время. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. Здравствуйте C: Спасибо всем за помощь :) К сожалению вчера вечером я не выходил в интернет(ибо стали болеть глаза, и я решил пару недель по вечерам не включать компьютер). Код выше заработал сразу, с одной поправкой, Код: plaintext 1. . Час изучал каждую строчку вашего и своего кода, ввёл у себя пределы. Всё-равно не работало. Тогда я стал читать поток таким образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И всё сразу заработало. MasterZiv, хотя ваша функция сравнения очевидно красивее. Заодно разобрал что значат #ifdef и #ifndef . Мощная штука, не перестаю удивляться красоте языка C: Ещё пока разбираю код. Попозже дополню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 03:36 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, в общем я всё равно её переписал, использовал много из вашего кода, кроме того что не стал хранить все элементы в памяти. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. самая красивая часть программы Код: plaintext 1. нравится, что не нужно писать !=0, или дважды сравнивать больше нуля, меньше нуля, нужно только знать как работает оператор if, и тогда всё сразу понятно :) PS Я думаю, мой первый вариант не работал из-за кодировки на сервере или чего-нибудь подобного. Проблема оказалась в считывании данных из файла.(я уже писал выше) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 07:17 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZiv, хотя ваша функция сравнения очевидно красивее. Заодно разобрал что значат #ifdef и #ifndef . Мощная штука, не перестаю удивляться красоте языка C: Ещё пока разбираю код. Попозже дополню Код: plaintext 1. Саша, это -- школярная хрень, кусок тривиального кода, банальшина. Конечно, язык С красивый, конечно, можно восхищяться каждой строчкой, по сравнению с отвратительным паскалем. Но тебе надо "ускоряться" как-то что ли, чтобы восхищяться какими-то более серьёзными вещами. А то, я боюсь, ты навосхищаешься, а на серьёзные вещи сил уже не останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 09:22 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercury Тогда я стал читать поток таким образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И всё сразу заработало. Я так и подозревал, что дело во вводе. На самом деле, ввод и вывод -- всегда вроде бы тривиальные части программы, но не всегда самые простые, и в них достаточно легко запутаться. Причём это характерно не только для языка С, а и вообще для программирования. Поэтому хочу ещё раз напомнить про замечательную технику программирования, которую нам (мне лично и моим однокашникам) прививали с первого курса института, которая называется "контрольная печать" : сразу после ввода данных они тут же распечатываются (делается их вывод) с целью контроля правильности ввода. И эта техника полезна не только для начинающих. Я до сих пор периодически пользуюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 09:28 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Ещё. Мы с Анатолием Широковым обсудили это дело, и он высказал идею, что сравнивать можно тупо через strcmp. Предварительно нужно естественно убрать лидирующие пробелы и нули. Я согласился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 09:30 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Окончательный вариант, добавлено обрезание лидирующих пробелов и нулей. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. input.txt Код: plaintext 1. bash Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.07.2014, 10:10 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Тут есть один маленький вопрос, который реально может поставить все с ног на голову (навеяно Вавилонскими башнями и римскими процентами) - а числа записаны точно арабскими цифрами (хз, что там у вождей за письменность в компьютере)? Это я так, в плане общего теоретизирования ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 01:24 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. MasterZivНо тебе надо "ускоряться" как-то что ли, чтобы восхищяться какими-то более серьёзными вещами. А то, я боюсь, ты навосхищаешься, а на серьёзные вещи сил уже не останется. Нет, я чувствую что Си и С++(так понимаю там наконец я смогу объединить функции с данными) это как футбол или математика, и то и другое мне нравится с пяти лет, ничего не изменилось C: Не забыл про Anatoly Moskovsky Напишите парсер С. Это ведь хорошая, серьёзная задача, верно ?. Но я чувствую что нужно сначала разобрать деревья нормально и другие структуры данных. Но Кнута слишком быстро читать не получается, потому я пока не приступил. Но приступлю скоро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 02:46 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
MasterZiv Поэтому хочу ещё раз напомнить про замечательную технику программирования, которую нам (мне лично и моим однокашникам) прививали с первого курса института, которая называется "контрольная печать" : сразу после ввода данных они тут же распечатываются (делается их вывод) с целью контроля правильности ввода. И эта техника полезна не только для начинающих. Я до сих пор периодически пользуюсь. уф. Мне эта вещь нравится, но я думал что так делают только школьники, а оказывается это нормально и даже есть такой термин. Теперь смело буду использовать, спасибо за совет ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 02:50 |
|
||
|
Сравнение больших чисел. Не могу понять в чём ошибка.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryMasterZivПоэтому хочу ещё раз напомнить про замечательную технику программирования, которую нам (мне лично и моим однокашникам) прививали с первого курса института, которая называется "контрольная печать" : сразу после ввода данных они тут же распечатываются (делается их вывод) с целью контроля правильности ввода. И эта техника полезна не только для начинающих. Я до сих пор периодически пользуюсь. уф. Мне эта вещь нравится, но я думал что так делают только школьники, а оказывается это нормально и даже есть такой термин. Теперь смело буду использовать, спасибо за совет !Есть только одна вещь которую делают только школьники: считают что все уже знают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2014, 06:48 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38708914&tid=2019347]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 16ms |
| total: | 196ms |

| 0 / 0 |
