天平 Not so Mobile UVa 839

题目描述

 输入格式

 

 输出格式

题意翻译

在成为一个交流工具之前,风铃只是一个用线悬挂着五彩缤纷的物品的结构。它通常挂在婴儿的摇篮上。下面的图例展示了一个简单的风铃。它只是一根杠杆,悬挂在绳子上,两边各挂有一个物体。它也可以被看作是一种天平。由杠杆原理,我们可知,一个杠杆的平衡条件是WL×DL = WR×DR。(其中WL为左边物体的重量,DL为左力臂的长度,WR为右边物体的重量,DR为右力臂的长度)一个更加复杂的天平也可通过此方式计算子天平来得到。如图二所示,在这种情况下,计算天平是否平衡是很复杂的,因此我们需要你编写一个程序,给出一个天平的描述作为输入,计算天平是否处于平衡状态。

输入 输入第一行为一个正整数n,代表接下来有n组询问,每一个参照下方叙述。该行后面是空行,在两个连续输入之间也有空行。 输入由若干行组成,每行包含4个由单个空格隔开的整数。这4个整数表示的分别是WL、DL、WR、DR; WL DL WR DR中如果WL或WR是零,则WL或WR下方仍有子天平。在这种情况下,我们计算子天平的重量作为物体的重量(WL或WR),杠杆和线的重量忽略。如果WL和WR都为零,则先给出左子天平再给出右子天平

输出 对于每个询问,两个连续的询问要用一个空行隔开。 如果天平处于平衡状态,输出“YES”,否则输出“NO”。

【输入样例】

1
0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2

【输出样例】

1
0 2 0 4
0 3 0 1
1 1 1 1
2 4 4 2
1 6 3 2
#include <iostream>
#include <cstring>
using namespace std;
#define maxn 10010
bool solve(int &W)
{
    int W1, D1, W2, D2;
    bool b1 = true, b2 = true;
    cin >> W1 >> D1 >> W2 >> D2;
    if (!W1)
    {
        b1 = solve(W1);
    }
    if (!W2)
    {
        b1 = solve(W2);
    }
    W = W1 + W2;
    return b1 && b2 && (W1 * D1 == W2 * D2);
}

int main()
{
    int T, W;
    cin >> T;
    while (T--)
    {
        if (solve(W))
        {
            cout << "YES\n";
        }
        else
        {
            cout << "NO\n";
        }
        if (T)
        {
            cout << "\n";
        }
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/stu-jyj3621/p/13379440.html
今日推荐