4th Point

【链接】nbu1500点击打开链接

【题目】

4th Point

Time Limit:1000MS  Memory Limit:65536K

Description

Given are the (x,y) coordinates of the endpoints of two adjacent sides of a parallelogram. Find the (x,y) coordinates of the fourth point

Input

Each line of input contains eight floating point numbers: the (x,y) coordinates of one of the endpoints of the first side followed by the (x,y) coordinates of the other endpoint of the first side, followed by the (x,y) coordinates of one of the endpoints of the second side followed by the (x,y) coordinates of the other endpoint of the second side. All coordinates are in meters, to the nearest mm. All coordinates are between -10000 and +10000.

Output

For each line of input, print the (x,y) coordinates of the fourth point of the parallelogram in meters, to the nearest mm, separated by a single space.

Sample Input

0.000 0.000 0.000 1.000 0.000 1.000 1.000 1.000
1.000 0.000 3.500 3.500 3.500 3.500 0.000 1.000
1.866 0.000 3.127 3.543 3.127 3.543 1.412 3.145

Sample Output

1.000 0.000
-2.500 -2.500
0.151 -0.398
 
【算法】
题目其实是很简单的,平行四边形对角线互相平分,就有对角的点x1+x3=x2+x4,但是呢,不能被样例给忽悠了,并不一定输入的第一、四个点是成对角的,所以要讨论了。另外很坑的就是,float是不能过的,必须double。
【代码】
#include "stdio.h"
void print(double a11,double a12,double c11,double c12,double d11,double d12)
{
	printf("%.3lf %.3lf\n",a11+d11-c11,a12+d12-c12);
}
int main()
{
	double a1,a2,b1,b2,c1,c2,d1,d2;
	while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&a1,&a2,&b1,&b2,&c1,&c2,&d1,&d2)!=EOF)
	{
		if(a1==b1&&a2==b2)
		{
			print(c1,c2,a1,a2,d1,d2);
		}
		else if(a1==c1&&a2==c2)
		{
			print(b1,b2,a1,a2,d1,d2);
		}
		else if(a1==d1&&a2==d2)
		{
			print(b1,b2,a1,a2,c1,c2);
		}
		else if(b1==c1&&b2==c2)
		{
			print(a1,a2,b1,b2,d1,d2);
		}
		else if(b1==d1&&b2==d2)
		{
			print(a1,a2,b1,b2,c1,c2);
		}
		else//if(c1==d1&&c2==d2)
		{
			print(a1,a2,c1,c2,b1,b2);
		} 
	}
	return 0;
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值