Ну, формулу, вам , скорее всего, никто не даст. Но можно порассуждать.
v- объем блока.
v=xyz.
F-обьем N блоков.
Возможно, но не всегда, уложенные блоки примут форму параллелепипеда :
а-длина этого параллелепипеда.
в-ширина его
с-высота его.
Ваши условия:
а<=2в(<= здесь знак меньше или равно)
а<=2с( а меньше или равно 2с).
Сложим их и получим условие для длины сложенных блоков(то есть этого нашего параллелепипеда)
а<=(в+с).
То есть чтобы укладывать надо вначале подсчитать объем всех блоков :
F=Nxyz.
Получилось какое-то число. Представим это число как произведение 3 чисел а, в, с.( ну, хотя бы, приблизительно). Может можно подобрать такие числа а, в, с чтобы а было меньше(или равно) суммы чисел в, с.
Пример:пусть объем N блоков равен 1728.Подберем числа
а, в, с.
18*8*12=1728
Здесь 18<8+12
18<20
А теперь о реальном.
Чтобы выполнить все ваши условия очень здорово нужно, чтобы были удобные числа х, у, z и N. И это еще не все, нужно чтобы числа а в, с тоже были удобные. Слишком много требований получается.
Так что можно получить а, а, с приблизительно, уложить аккуратно бОльшую часть блоков в параллелепипед, а оставшиеся блоки пусть отдельно полежат.
P. S - число 1728 я тоже очень здорово подогнал, но еще и вовсе не факт, что размеры одного блока таковы, что можно получить параметры 18,8 и 12.
В обшем такова арифметика.