编程题
## 题目描述 平面上有很多条直线,其中每一条直线可以表达为 $y=Ax+B$。 给定 $k$ 条指令,每条指令可能是以下三种之一: 1. 平面上给出两条直线的 $A,B$ 值,判断两条直线是否相交。是则回答 `yes`,不则回答 `no`。 2. 平面上给出两条直线的 $A,B$ 值,平面上求两条直线相交的点。不相交则回答 `no`,相交则输出点的 $x,y$ 坐标,小数点后保留两位。 3. 平面上给出三点 $P、C、D$ 的坐标,问 $P$ 点是否落在 $C$、$D$ 两点的线段上。(判断一个点是否在一个线段上)是则回答 `yes`,不则回答 `no`。 根据以上的指令做出相应的回答。 ## 输入描述 第一行包含一个整数 $k$。 以下 $k$ 行,每行给出一个指令,指令格式如下: - `1 A1 B1 A2 B2 `:$1$ 表示指令类型,$A1,B1$ 为第一条直线的 $A,B$ 值,$A2,B2$ 为第二条直线的 $A,B$ 值; - `2 A1 B1 A2 B2`:$2$ 表示指令类型,$A1,B1$ 为第一条直线的 $A,B$ 值,$A2,B2$ 为第二条直线的 $A,B$ 值; - `3 x1 y1 x2 y2 x3 y3`:$3$ 表示指令类型,$x1,y1$ 表示点 $P$ 的坐标,$x2,y2$ 表示点 $C$ 的坐标,$x3,y3$ 表示点 $D$ 的坐标。 其中, $1≤k≤1000,-10^5≤A,B,x,y≤10^5$。 ## 输出描述 对于每个查询指令输出相应答案。 每个指令答案占一行。 ## 输入样例 ```text 5 1 1 1 1 2 1 1 1 2 1 2 2.8 1 50 1 3 1 1 0 0 2 2 2 1 1 1 2 ``` ## 输出样例 ```text no yes 0.00 1.00 yes no ``` ## 样例解释 示例 $1$ 中有五个指令: 第一个指令是 $1$ 指令,给出两直线分别为 $y=x+1$ 和 $y=x+2$,不相交输出 `no`; 第二个指令是 $1$ 指令,给出两直线分别为 $y=x+1$ 和 $y=2x+1$,相交输出 `yes`; 第三个指令是 $2$ 指令,给出两直线分别为 $y=2.8x+1$ 和 $y=50x+1$,相交输出交点坐标 `(0,1)`; 第四个指令是 $3$ 指令,给出 $P$ 点(1,1)在 $A(0,0)$ 和 $B(2,2)$ 组成的线段中输出 `yes`; 第五个指令是 $2$ 指令,给出两直线分别为 $y=x+1$ 和 $y=x+2$,不相交输出 `no`。
查看答案
赣ICP备20007335号-2