标签:ref 旋转 代码 ack ems stdio.h memset clu link
Arpa and an exam about geometry
题意:a b c3个点在二维平面上构成一个三角形,问是否存在一个点,使得三角形绕点旋转一定角度后可以使得a到b,b到c的位置上
思路:易得,所求的点一定是abc三点共圆的圆心,且ab,bc所对的圆心角相等,即ab=bc,且abc不共线
AC代码:
#include "iostream" #include "iomanip" #include "string.h" #include "time.h" #include "stack" #include "queue" #include "string" #include "vector" #include "set" #include "map" #include "algorithm" #include "stdio.h" #include "math.h" #pragma comment(linker, "/STACK:102400000,102400000") #define bug(x) cout<<x<<" "<<"UUUUU"<<endl; #define mem(a,x) memset(a,x,sizeof(a)) #define step(x) fixed<< setprecision(x)<< #define mp(x,y) make_pair(x,y) #define pb(x) push_back(x) #define ll long long #define endl ("\n") #define ft first #define sd second 1 #define lrt (rt<<1) #define rrt (rt<<1|1) using namespace std; const ll mod=1e9+7; const ll INF = 1e18+1LL; const int inf = 1e9+1e8; const double PI=acos(-1.0); const int N=1e3+100; int main(){ ios::sync_with_stdio(0),cin.tie(0),cout.tie(0); ll a1,a2,b1,b2,c1,c2; cin>>a1>>a2>>b1>>b2>>c1>>c2; ll ab=(b1-a1)*(b1-a1)+(b2-a2)*(b2-a2); ll bc=(c1-b1)*(c1-b1)+(c2-b2)*(c2-b2); if(ab!=bc){ cout<<"No"; return 0; } else{ ll k1,k2; k1=(b2-a2)*(c1-b1); k2=(c2-b2)*(b1-a1); if(k1==k2) cout<<"No"; else cout<<"Yes"; } return 0; }
标签:ref 旋转 代码 ack ems stdio.h memset clu link
原文地址:http://www.cnblogs.com/max88888888/p/7481846.html