Как хранить два натуральных числа в одном, не превышающем их произведение (границы множества чисел для обоих из чисел известны)?
Извиняюсь за столь идиотский вопрос, но я уже перерыл весь гугл.
Есть число a, лежащее в промежутке [0; 5], и число b, лежащее в промежутке [0; 1]. Нужно представить эти числа числом c, причем чтобы никакие пары чисел не имели одинакового представления. Гугл заботливо выдает способы от самых наивных вроде формул a * (max(a, b) + 1) + b, до каких-то диких представлений вроде сумм степеней или формул на три строчки. Но все это не подходит, так как мне нужно чтобы полученное число c лежало в промежутке [0; 11] и я уверен что это возможно, так как из элементарной комбинаторики выходит, что всего возможно 6 * 2 различных комбинаций, что прекрасно помещается в заданный мной промежуток числа c: но вот придумать самому ничего не получается.
Lynn «Кофеман», с нулем путаница есть. Некоторые страны и области наук принимают ноль за натуральное число, некоторые - нет. Да и определение натуральных чисел не самое аккуратное.
все это не подходит, так как мне нужно чтобы полученное число c лежало в промежутке [0; 11]
Ну так a * (max(b) + 1) + b же.
Иными словами мы делаем двузначное число в позиционной системе исчисления с неравными весами разрядов, младший разряд -- b, старший разряд -- a. Вес младшего разряда -- 1, вес старшего -- max(b) + 1.
Можно, конечно, но вот только проблема заключается в том, что формула мне понадобилась как раз чтобы уйти от использования сложных типов данных вроде массивов с массивами, которые не так уж и быстро работают в отличии от достаточно дешевого вычисления индекса.