public Number multiplyRemoveZero(Number other, int length) {
        final Number res = new Number(length);
        if (getFilledLength() == 0 || other.getFilledLength() == 0) {
            return res;
        }

        int i = 0;
        long carry = 0;
        int diff = 0;
        while (i - diff < length) {
            for (int j = i; j >= 0; j--) {
                final int ij = i - j;
                if (j < values.length && ij >= 0 && ij < other.values.length) {
                    carry += values[j] * other.values[ij];
                }
            }
            res.values[i - diff] = (byte) (carry % 10);
            carry /= 10;

            if (i == diff && res.values[0] == 0) {
                diff++;
            }
            i++;
        }
        return res;
    }