Мне нужно вычислить что-то вроде этого (псевдокод):
// a, b, x, y are long, x,y <= 10^12
long i = (a - n)/(x*y)
и
long j = (b - n)/(x*y) - ceiling
Иногда х * у долго не помещается. Я хотел бы избежать использования BigDecimal / BigInteger, так как это слишком дорого и больше нигде не нужно. Есть ли умное математическое решение, например с двумя длинными или что-то в этом роде?
Спасибо!
ОБНОВЛЕНИЕ : Извините, ребята, еще одно ограничение: у меня также есть переменная, вычисленная следующим образом (может быть, она также может быть переписана):
sum += x*y
Мне нужно пересчитать его, чтобы сравнить с другой переменной, чтобы остановить цикл.