2021级新生程序设计班级天梯赛:2-3 请再一次做我的棋子

“世间的事,太痛苦了。我该怎样才能忘却呢?”

“下棋吧。”

“棋,能代替世间吗?”

“能。因为纵横十九道内,栖息着宇宙。”

《王者荣耀》中奕星的大招是画出一个矩形。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;
}

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值