Эта задача пришла к нам в прошлом году из индийских соцсетей, поэтому в ней лихой сюжет и неожиданная развязка.
В одной индийской компании программист в обед услышал громкие крики и причитания из бухгалтерии. Оказывается, в программе, которую сделал этот программист, есть две колонки — «Потрачено» и «Остаток». Но из-за странной ошибки у бухгалтера не сходится баланс.
Началось всё так: компания выдала менеджеру 50 тысяч на закупку товаров, а каждый расход заносился в программу. Первая покупка вышла в 20 тысяч, и это сразу отразилось в таблице:
После этого менеджер сделал ещё три покупки, которые тоже сразу отправились в отчётную таблицу:
Но когда программа сложила числа в столбцах, то выяснилось, что суммы отличаются и откуда-то взялась лишняя тысяча. В чём ошибка?
С точки зрения математики, в этой задаче всё верно — в обоих столбиках сумма посчитана правильно, подвоха здесь нет.
Но проблема в том, что в этой задаче не имеет смысла складывать содержимое столбца «Остаток». Имеет смысл считать только потраченные деньги.
Столбец «Остаток» показывает лишь количество оставшихся денег после всех предыдущих операций и служит показателем лимита расходов. А правильные операции с использованием остатка выглядят так:
Как это проверить: попробуйте потратить первым действием не 20 тысяч, а два раза по 10 тысяч. В «Остатке» вы получите сначала 40, потом 30. В сумме это уже даст 70, хотя мы не потратили даже половину.
Или попробуйте последнее действие (когда тратили 6 тысяч) разделить на 6 действий по одной тысяче. В остатке вы получите 5, 4, 3, 2, 1 и 0. В сумме это 15, хотя потратили мы только 6.
Короче: суммировать остатки некорректно. Это не «Дебет» и «Кредит», это другое.
То, что в исходной задаче в «Остатке» появилась дополнительная тысяча, — не более чем способ запутать обывателя. Мы намеренно каждый раз вычитаем всё меньшие числа, чтобы было ощущение, что остаток и потраченная сумма как-то связаны. А они не связаны.
Теперь, когда вы это знаете, попробуйте загадать эту задачку своим коллегам и родственникам и посмотрите, сколько времени им понадобится, чтобы получить правильный ответ :-)