一道数学题,现在列出了方程,不知道怎么解【第二弹】
原题链接:https://www.luogu.com.cn/problem/P8814 (放心,这一次可以公开了)
我的思路是这样的:
已知 p + q = n - (e * d - 2),还有 p * q = n,也就说明我们知道的两个数的和,积,问两个数各是多少?
我因为不知道如何解,我就只能用二分来做了……
但是,二分这算法,人人皆知,O(log n),太 low 了!男人肯定要追求 O(1) 的算法啦!
于是,我开始疯狂的找百度……
百度上有个人这么说这道题只能用方程来求
假设两数之和是c,两数之积是s
a+b=c ab=s
a=c-b
(c-b)*b=s
cb-b∧2=s
因为c和s都是定值
所以可以求出b
然后代入a加b等于c,求出a
但是,cb-b∧2=s,是一道一元二次方程,因为我是小学生,所以我还是不会解{:10_266:}
有没有人会一元二次方程,可以教教我吗{:10_254:}
@不二如是 您会吗,十分感谢{:10_254:} 本帖最后由 tommyyu 于 2022-11-11 18:36 编辑
求根公式,就是如果 ax^2+bx+c = 0,x1 = ( -b + sqrt(b^2+4ac) ) / (2a),x2 = ( -b - sqrt(b^2+4ac) )/ (2a)
推导过程(用鼠标写的,可能有一点潦草{:10_269:} ):
zhangjinxuan 发表于 2022-11-11 18:25
@不二如是 您会吗,十分感谢
这个东西好像是在初二会讲到 zhangjinxuan 发表于 2022-11-11 18:25
@不二如是 您会吗,十分感谢
去搜韦达定理吧
这个你直接可以学了
哦对 , 出成绩了100 0 0 45{:10_250:} 一元二次方程解法:
1.直接开平方
2.因式分解
3.配方法(需使用完全平方公式,公式为(a+b)^2=a^2+2ab+b^2)
4.公式法(由配方法推导而来,求根公式为x=(-b+-sqrt(b^2-4ac))/(2a),sqrt(b^2-4ac)<0则无解) tommyyu 发表于 2022-11-11 18:37
这个东西好像是在初二会讲到
我们这初三才讲(华东师大版) tommyyu 发表于 2022-11-11 18:34
求根公式,就是如果 ax^2+bx+c = 0,x1 = ( -b + sqrt(b^2+4ac) ) / (2a),x2 = ( -b - sqrt(b^2+4ac) )/ ...
凑合看看 临时号 发表于 2022-11-11 18:43
一元二次方程解法:
1.直接开平方
2.因式分解
具体一点~感谢 tommyyu 发表于 2022-11-11 18:34
求根公式,就是如果 ax^2+bx+c = 0,x1 = ( -b + sqrt(b^2+4ac) ) / (2a),x2 = ( -b - sqrt(b^2+4ac) )/ ...
那么在这里,a, b, c 各指什么呢? 本帖最后由 临时号 于 2022-11-11 20:46 编辑
zhangjinxuan 发表于 2022-11-11 18:51
具体一点~感谢
公式法最简单,只要套公式就可以了
所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解) 临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了
所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)
那么 a, b, c, x 分别代表本题的什么跟什么呢? 临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了
所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)
方程理解了,那么 a, b, c, x 分别指什么? zhangjinxuan 发表于 2022-11-11 19:10
方程理解了,那么 a, b, c, x 分别指什么?
a=-1
b=c
c=-s
x=b 临时号 发表于 2022-11-11 19:14
a=-1
b=c
c=-s
好的,我写一些代码 临时号 发表于 2022-11-11 19:14
a=-1
b=c
c=-s
#include <bits/stdc++.h>
using namespace std;
int main(void) {
long long k, e, d, n;
scanf("%lld", &k);
for (int i = 1; i <= k; ++i) {
scanf("%lld%lld%lld", &n, &e, &d);
long long s = n - (e * d - 2);
double b = s, c = -n, x;
x = (-b + sqrt(b * b - -4.0 * c)) / -2;
long long p = s - (long long)x;
long long q = (long long)x;
if (p * q == n && (p - 1) * (q - 1) + 1 == e * d) {
if (p > q) swap(p, q);
printf("%lld %lld\n", p, q);
} else printf("NO\n");
}
return 0;
}
怎么WA了??{:10_277:} 临时号 发表于 2022-11-11 18:44
我们这初三才讲(华东师大版)
我们学的是北师大版 临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了
所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)
{:10_277:}条件不应该是a≠0么 tommyyu 发表于 2022-11-11 20:25
条件不应该是a≠0么
哦,对,写快了,我改一下 临时号 发表于 2022-11-11 20:45
哦,对,写快了,我改一下
打扰一下,因为我要做一个每周一练,马上就要该我发了,而我就选这道题作为我下一次的每周一练,题解思路可以用您的吗?万分感谢^_^
页:
[1]
2