c++ - 解方程。计数 (x,y)

标签 c++ c math equation-solving

我的数学有问题:

假设我们有一个函数:F(x,y) = P;我的问题是:为该函数计算合适的 (x,y) 图的最有效方法是什么?这意味着我不需要坐标本身,但我需要它们的数量。 P 在范围内:[0 ; 10^14]。 “x”和“y”是整数。是使用暴力破解还是有一些高级技巧(数学/编程语言(C,C++))来足够快地解决这个问题?

更具体地说,函数是:x*y - ((x+y)/2) + 1。

最佳答案

x*y - ((x+y)/2) + 1 == P 等同于 (2x-1)(2y-1) == (4P-3 )

所以,您基本上是在寻找 4P-3 的因式分解数。如何在 C 或 C++ 中对数字进行因式分解可能是一个不同的问题,但每个因式分解都会产生原始方程的解。 [编辑:实际上有两个解决方案,因为如果 A*B == C 那么当然还有 (-A)*(-B) == C]。

就编程语言 C 和 C++ 而言,只要确保您使用的类型足够大以包含 4 * 10^14int 不行,所以试试 long long

关于c++ - 解方程。计数 (x,y),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6224970/

相关文章:

c++ - typedef 指针是个好主意吗?

c++ - cmake 链接到静态库 - 你必须告诉 cmake 去哪里找吗?

c++ - std::thread 通过引用传递调用复制构造函数

c - C语言中的"register"关键字?

math - float 学有问题吗?

python - 如何在pandas dataframe中编写N天损益百分比的函数?

c# - 找到完全覆盖矩形集所需的最少固定大小矩形的算法

c++ - Visual Studio 找不到包含的定义

c++ - shared_ptr 的 use_count() 移动到 gcc 4.6.3 中的 std::async

c++ - 用 C 语言编写我的 C++ 代码