Использовать на тиньке плавучку - действительно глупо. Тем более для умножения двух чисел. Тем более если их диапазон не слишком велик.
Примерно как Вы описали. Предварительное умножение всех чисел на константу. Дальше умножение двух чисел включает целочисленное умножение и умножение известных заранее констант, поэтому константа, на которую оказывается умноженным результат, известна заранее, и на нее можно поделить результат после всех вычислений. Дальше эти константы должны быть степенями двойки, а не 1000: в этом случае умножение/деление на константу сводится к битовым сдвигам влево и вправо, а умножение констант сводится к выполненному заранее суммированию их сдвигов.