Страница 1 из 1

Задача про суммы элементов массива

Добавлено: 12 сен 2010, 17:53
Navi1982
Допустим у нас есть массив A[1..n] (n=0..x+1). Каждый элемент такого массива может принимать любое значение в диапазоне от 0..х. Элементы в массиве цыклические, например если х=9, то 7+5=12 mod 10=2. Извесна сумма всех элементов массива S, которая зависима от самих элементов в массиве и может принимать значения от 0 до n*x. DeltaS это разница между значениями S и n*x/2 взятая по модулю:
DeltaS=|S-n*x/2|,
т.e. расстояние между текущей суммой и полвины максимальной суммы.

Так вот, вопрос такой:
Возможно ли уменьшить или увеличить сумму элементов так, чтобы новая сумма была максимально отдалена от половины максимальной суммы? T.e. найти максимальную DeltaS. Ho при условии, что элементы массива должны быть востановлены на прежние величины. При этом не хранить "карту" изменяемых элементов. Разрешается использовать только 1 или 2 числа не превышающие диапазон 0..(x+1)*2.

Согласен - задачка не простая... Первое что пришло в голову - это использовать 1 число (назовем его h) от 0..x, и просумировать h+1 раз массив, затем найти тот вариант, где DeltaS будет максимальна. Ho результат не очень впечатляющий, т.e. редко удается значительно увеличить DeltaS. Желательно если DeltaS всегда будет удаваться сдвигать на минимум 1/4 от n*x. или хотябы на 1/3.

Задача про суммы элементов массива

Добавлено: 15 сен 2010, 18:25
Navi1982
Немного пересказал задание, может так понятней будет:

Вопрос состоит в том: как бы изменить цыфры данного числа, так чтобы значительно*** уменьшить* или увеличить* их сумму? Ho c условием, что число придется востанавливать**.

*Пусть число будет состоять из $$n$$ цыфр в $$(x+1)$$-ной системе счисления, тогда $$S_{max} = n \cdot x$$, a $$S_{mid} = \frac{S_{max}}{2}$$. Другое значение $$\delta S$$ - это число отражающее разницу между $$S_{mid}$$ и суммы цыфр из числа. T.e. $$\delta S = |S_{mid}-S|$$. Следовательно, для того чтобы УМЕНЬШИТЬ (к нулю) или УВЕЛИЧИТЬ (к $$S_{max}$$) значение $$S$$ - необходимо произвести некоторые операции над цыфрами данного числа или над всем числом в общем.

**Для того чтобы востановить исходное число, возможно придется использовать некоторые переменные, поэтому допускается использовать 1-2 переменные размерностью не больше чем $$2x+1$$ или 1 переменную размером $$(x+1)^2-1$$.

***Степень увеличения $$\delta S$$ должна вписываться в диапазон: $$\frac{1}{4}S_{mid} \le \delta S \le S_{mid}$$.