2014-02-01 2 views
-1

У меня есть N целые числа: 1,2,3 ... NАрифметические операции по последовательности на целых

Задача состоит в том, чтобы использовать +, -, *, /, чтобы сделать выражение 0.

Для пример -1 * 2 + 3 + 4-5 = 0

Как это сделать?

Может быть, какой-нибудь код на C/C++?

+0

Этот вопрос не соответствует теме, потому что речь идет не о программировании. –

+0

Это на самом деле программирование, потому что я нашел его в своем наборе проблем в университете. – user3260563

ответ

1

Если N% 4 == 0, для каждых четырех последовательных целых чисел а, б, в, г, взять - B - C + D

Если N% 4 == 1, используют 1 * 2 для начните, затем действуйте по-прежнему. (т. е. 1 * 2 - 3 - 4 + 5 + 6 - 8 - 8 + 9 ...)

Если N% 4 == 2, начните с 1 - 2 + 3 * 4 - 5 - 6, затем продолжайте, как в примере N% 4 == 0.

Если N% 4 == 3, начните с 1 + 2 - 3, то продолжайте, как в примере N% 4 == 0.

Все они находят способ получить нуль из первых нескольких целых чисел, оставляя несколько из четырех целых чисел для работы, а затем воспользуемся тем фактом, что шаблон a-b-c + d = 0 для любого четыре последовательных целых числа.

+0

Спасибо за это простое объяснение :) – user3260563

0

Это по существу SAT, или вы знаете, что цифры являются последовательностью (например, 2 1 8 запрещено). Как насчет отрицательных чисел?

Если последовательность не слишком велика, я бы рекомендовал просто загрузить ее. Жадным решением было бы уменьшить проблему, найдя подмножества, которые можно оценить до нуля.

+0

Спасибо за статью по Википедии, это было действительно полезно! – user3260563

Смежные вопросы