题目:E-公平守望的灯塔_2023牛客寒假算法基础集训营3 (nowcoder.com)
知识点:此题关键是考虑到用向量来做比较简单
(1)向量(x,y)和向量(-y,x)的夹角为90°(因为点乘为0);向量(x,y)和向量(y,-x)的夹角为90°(因为点乘为0)。
(2)公式: 已知正方形对角线两点的坐标那么可以求出剩下两点的坐标:已知两点坐标 (a,b),(c,d)
x1=(a-b+c+d)/2 y1=(a+b-c+d)/2
x2=(a+b+c-d)/2 y2=(-a+b+c+d)/2
其实(2)是由(1)推出来的。
注意:此题要开long long才能过(我不是很理解)
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; int main() { ll xa,xb,ya,yb; cin>>xa>>ya>>xb>>yb; bool f=false; ll xc,yc; ll x,y; xc=xa+xb+ya-yb,yc=xb-xa+ya+yb; if(xc%2==0&&yc%2==0) { f=true; x=xc/2,y=yc/2; } xc=yb-ya+xa+xb,yc=xa-xb+ya+yb; if(xc%2==0&&yc%2==0){ f=true; x=xc/2,y=yc/2; } if(!f) cout<<"No Answer!"; else cout<<x<<" "<<y; }
标签:yb,ya,xc,yc,xa,xb,牛客,-----,集训营 From: https://www.cnblogs.com/hhhhy0420/p/17064411.html