I’m having a trouble with my math:
Assume that we have a function: F(x,y) = P; And my question is: what would be the most efficient way of counting up suitable (x,y) plots for this function ? It means that I don’t need the coordinates themself, but I need a number of them. P is in a range: [0 ; 10^14]. “x” and “y” are integers. Is it solved using bruteforce or there are some advanced tricks(math / programming language(C,C++)) to solve this fast enough ?
To be more concrete, the function is: x*y – ((x+y)/2) + 1.
x*y - ((x+y)/2) + 1 == Pis equivalent to(2x-1)(2y-1) == (4P-3).So, you’re basically looking for the number of factorizations of
4P-3. How to factor a number in C or C++ is probably a different question, but each factorization yields a solution to the original equation. [Edit: in fact two solutions, since ifA*B == Cthen of course(-A)*(-B) == Calso].As far as the programming languages C and C++ are concerned, just make sure you use a type that’s big enough to contain
4 * 10^14.intwon’t do, so trylong long.