Тут какая-то теорема о том, что среди K..2K обязательно есть простое число нужна (не помню, как она называется
Ну и гиря (P+1)/2. Или её не будет оставаться? Кажется, не будет.
Например, можно взять максимальное простое число P <= N+1 и набирать его всеми возможными парами (1+(P-1), 2+(P-2)). В итоге у вас остнется одна нечетная гиря (P+1)/2 и все гири >=P. Например, если N+1 простое - то это оптимальный способ.
В своем приложении я беру картинку с потока видеокамеры пользователя, мне стоило это указать сразу
count = d < 0 ? (-d) / 2 + ((-d) % 2) * 3 : d / 3 + (d % 3) * 2;
если индекс массива + 1 не выходит за диапазон массива
они сводятся к таким правилам:
1) для левого поддерева нужны скобки, если у операции левого поддерева ниже приоритет, чем у текущей ноды (для листовой ноды считаем, что приоритет самый высокий)
2) для правого - как для левого, а так же, при равенстве приоритетов, если операция в левом поддереве неассоциативна.
соответственно надо создать словарь операций с их приоритетом и ассоциативностью, и тогда не придется кучу ифов.