点是否在直线上
點是否在直線上
Time Limit: 1 Sec??Memory Limit: 128 MB?? 64bit IO Format: %lld
Description
給定一條直線和一個點,判斷該點是否在直線上。
?
Input
包含多組測試數據,每組測試數據占一行,每行6個整數x1,y1,x2,y2,x3,y3,分別表示三個點的坐標,p1(x1,y1),p2(x2,y2),p3(x3,y3),p1和p2點嗲表一條直線L。直線L保證不平行于坐標軸,p1和p2不重合。
?
Output
每組測試數據輸出占一行,如果p3在直線L上則輸出“yes”,否則輸出“no”。
?
Sample Input
0 0 1 1 2 2
?
Sample Output
yes
題目分析:
看上去不難,但是實際上很容易WA……
為什么為什么為什么~不要被 “ 整數 ” 騙了喲!
整數相除的時候會自動向下取整,這道題把 int 改成 double 就能解決問題啦!
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{double x1,y1,x2,y2,x3,y3;while(scanf("%lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF){if(x3==x1 && y3==y1 || x3==x2 && y3==y2){printf("yes\n");continue;}if((x3-x1)/(x2-x1)==(y3-y1)/(y2-y1)){printf("yes\n");}elseprintf("no\n");}return 0;
}
?
總結
- 上一篇: 用什么材料炒八爪鱼?
- 下一篇: 零起点学算法24——求正弦和余弦