• UVA 839 (13.08.20)


     

     Not so Mobile 

    Before being an ubiquous communications gadget, a mobile wasjust a structure made of strings and wires suspending colourfullthings. This kind of mobile is usually found hanging over cradlesof small babies.

    epsfbox{p839a.eps}

    The figure illustrates a simple mobile. It is just a wire,suspended by a string, with an object on each side. It can also beseen as a kind of lever with the fulcrum on the point where thestring ties the wire. From the lever principle we know that tobalance a simple mobile the product of the weight of the objectsby their distance to the fulcrum must be equal. That isWl×Dl = Wr×Drwhere Dl is the left distance, Dr is theright distance, Wl is the left weight and Wris the right weight.


    In a more complex mobile the object may be replaced by asub-mobile, as shown in the next figure. In this case it is not sostraightforward to check if the mobile is balanced so we need youto write a program that, given a description of a mobile as input,checks whether the mobile is in equilibrium or not.

    epsfbox{p839b.eps}

    Input 

    The input begins with a single positive integer on a line by itself indicatingthe number of the cases following, each of them as described below.This line is followed by a blank line, and there is also a blank line betweentwo consecutive inputs.


    The input is composed of several lines, each containing 4 integersseparated by a single space. The 4 integers represent thedistances of each object to the fulcrum and their weights, in theformat: Wl Dl Wr Dr

    If Wl or Wr is zero then there is a sub-mobile hanging fromthat end and the following lines define the the sub-mobile. Inthis case we compute the weight of the sub-mobile as the sum ofweights of all its objects, disregarding the weight of the wiresand strings. If both Wl and Wr are zero then the followinglines define two sub-mobiles: first the left then the right one.

    Output 

    For each test case, the output must follow the description below.The outputs of two consecutive cases will be separated by a blank line.


    Write `YES' if the mobile is in equilibrium, write `NO' otherwise.

    Sample Input 

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

    Sample Output 

    YES
    

    题意:

    输入数据,描绘了一个天平,要求天平要平衡,其中有嵌套进去的天平,也要求不能倾斜~

    然后平衡的公式应该都知道吧:w1 * d1 = w2 * d2;

    思路:

    递归不解释,数据出现0的时候就是递归的入口~


    AC代码:

    #include<stdio.h>
    
    int flag;
    
    int getW(int w) {
        int tw1, td1, tw2, td2;
        int p1, p2;
        if(w == 0) {
            scanf("%d %d %d %d", &tw1, &td1, &tw2, &td2);
            p1 = getW(tw1) * td1;
            p2 = getW(tw2) * td2;
            if(p1 == p2)
                return (p1/td1 + p2/td2);
            else {
                flag = 0;
                return -1;
            }
        }
        else
            return w;
    }
    
    int main() {
        int T;
        scanf("%d", &T);
        while(T--) {
            int w1, d1, w2, d2;
            int p1, p2;
            flag = 1;
            scanf("%d %d %d %d", &w1, &d1, &w2, &d2);
            p1 = getW(w1) * d1;
            p2 = getW(w2) * d2;
            if(p1 == p2 && flag == 1) {
                printf("YES
    ");
                if(T)
                    printf("
    ");
            }
            else {
                printf("NO
    ");
                if(T)
                    printf("
    ");
            }
        }
        return 0;
    }
  • 相关阅读:
    密码系统的安全性
    liboqs-量子安全密码算法开源C库
    密码基础知识(1)
    同态加密
    NTL 库函数
    以太坊相关的区块链知识
    53字符流中第一个不重复的字符
    基础小知识总结
    52表示数值的字符串 记忆
    HIHOcoder编程总结
  • 原文地址:https://www.cnblogs.com/riskyer/p/3271397.html
Copyright © 2020-2023  润新知