“世间的事,太痛苦了。我该怎样才能忘却呢?”
“下棋吧。”
“棋,能代替世间吗?”
“能。因为纵横十九道内,栖息着宇宙。”
《王者荣耀》中奕星的大招是画出一个矩形。LT 是一个强迫症患者,如果画出来的矩形不是正方形,他就会很难受。现在告诉你奕星大招的四个顶点,请你判断这个矩形是否为正方形。
输入格式:
第一行输入四个整数 xi(0≤xi≤10000)
第二行输入四个整数 yi(0≤yi≤10000)
输出格式:
如果矩形是正方形,输出 好耶!
,否则输出 emo!
。
输入样例:
0 0 2 2
0 2 0 2
输出样例:
好耶!
实数判断相等要注意消除精度(ZZULIOJ)上之前有过
# include <stdio.h>
# include <math.h>
int x[4], y[4];
double dis[20];
int id_dis = 0;
double get_Dis ( int x1, int y1, int x2, int y2 ) // (x1, y1)与(x2, y2)的距离
{
long long dirx = x1 - x2; dirx *= dirx;
long long diry = y1 - y2; diry *= diry;
return sqrt(dirx + diry);
}
int equal ( double x, double y ) // 相等返回1,否则返回0
{
if ( fabs(x - y) < 1e-9 )
return 1;
return 0;
}
int main ()
{
int i, j;
for (i = 0; i < 4; i ++ )
scanf("%d",&x[i]);
for (i = 0; i < 4; i ++ )
scanf("%d",&y[i]);
for (i = 0; i < 4; i ++ )
{
for (j = i + 1; j < 4; j ++ )
{
dis[id_dis ++] = get_Dis(x[i], y[i], x[j], y[j]);
}
}
for (i = 0; i < id_dis; i ++ )
{
for (j = i + 1; j < id_dis; j++ )
{
if ( dis[i] > dis[j] )
{
double tmp = dis[i];
dis[i] = dis[j];
dis[j] = tmp;
}
}
}
if ( !equal(dis[0], 0) && equal(dis[0],dis[1]) && equal(dis[1], dis[2]) && equal(dis[2],dis[3]) && equal(dis[4], dis[5]) )
{
if ( equal(dis[0] * sqrt(2), dis[4]))
puts("好耶!");
else puts("emo!");
}
else puts("emo!");
return 0;
}