zhangjinxuan 发表于 2022-11-11 17:34:33

一道数学题,现在列出了方程,不知道怎么解【第二弹】



原题链接: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:}

zhangjinxuan 发表于 2022-11-11 18:25:19

@不二如是 您会吗,十分感谢{:10_254:}

tommyyu 发表于 2022-11-11 18:34:45

本帖最后由 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:} ):

tommyyu 发表于 2022-11-11 18:37:12

zhangjinxuan 发表于 2022-11-11 18:25
@不二如是 您会吗,十分感谢

这个东西好像是在初二会讲到

柿子饼同学 发表于 2022-11-11 18:39:45

zhangjinxuan 发表于 2022-11-11 18:25
@不二如是 您会吗,十分感谢

去搜韦达定理吧
这个你直接可以学了
哦对 , 出成绩了100 0 0 45{:10_250:}

临时号 发表于 2022-11-11 18:43:56

一元二次方程解法:
1.直接开平方
2.因式分解
3.配方法(需使用完全平方公式,公式为(a+b)^2=a^2+2ab+b^2)
4.公式法(由配方法推导而来,求根公式为x=(-b+-sqrt(b^2-4ac))/(2a),sqrt(b^2-4ac)<0则无解)

临时号 发表于 2022-11-11 18:44:58

tommyyu 发表于 2022-11-11 18:37
这个东西好像是在初二会讲到

我们这初三才讲(华东师大版)

zhangjinxuan 发表于 2022-11-11 18:50:56

tommyyu 发表于 2022-11-11 18:34
求根公式,就是如果 ax^2+bx+c = 0,x1 = ( -b + sqrt(b^2+4ac) ) / (2a),x2 = ( -b - sqrt(b^2+4ac) )/ ...

凑合看看

zhangjinxuan 发表于 2022-11-11 18:51:27

临时号 发表于 2022-11-11 18:43
一元二次方程解法:
1.直接开平方
2.因式分解


具体一点~感谢

zhangjinxuan 发表于 2022-11-11 18:52:46

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 19:00:31

本帖最后由 临时号 于 2022-11-11 20:46 编辑

zhangjinxuan 发表于 2022-11-11 18:51
具体一点~感谢

公式法最简单,只要套公式就可以了

所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)

zhangjinxuan 发表于 2022-11-11 19:04:36

临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了

所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)

那么 a, b, c, x 分别代表本题的什么跟什么呢?

zhangjinxuan 发表于 2022-11-11 19:10:01

临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了

所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)

方程理解了,那么 a, b, c, x 分别指什么?

临时号 发表于 2022-11-11 19:14:35

zhangjinxuan 发表于 2022-11-11 19:10
方程理解了,那么 a, b, c, x 分别指什么?

a=-1
b=c
c=-s
x=b

zhangjinxuan 发表于 2022-11-11 19:28:02

临时号 发表于 2022-11-11 19:14
a=-1
b=c
c=-s


好的,我写一些代码

zhangjinxuan 发表于 2022-11-11 19:42:06

临时号 发表于 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:}

tommyyu 发表于 2022-11-11 20:25:20

临时号 发表于 2022-11-11 18:44
我们这初三才讲(华东师大版)

我们学的是北师大版

tommyyu 发表于 2022-11-11 20:25:51

临时号 发表于 2022-11-11 19:00
公式法最简单,只要套公式就可以了

所以x^2+2x+1=0的解为x1=x2=-1(一元二次方程有两个解)

{:10_277:}条件不应该是a≠0么

临时号 发表于 2022-11-11 20:45:25

tommyyu 发表于 2022-11-11 20:25
条件不应该是a≠0么

哦,对,写快了,我改一下

zhangjinxuan 发表于 2022-11-16 11:42:42

临时号 发表于 2022-11-11 20:45
哦,对,写快了,我改一下

打扰一下,因为我要做一个每周一练,马上就要该我发了,而我就选这道题作为我下一次的每周一练,题解思路可以用您的吗?万分感谢^_^
页: [1] 2
查看完整版本: 一道数学题,现在列出了方程,不知道怎么解【第二弹】