魔法

来源:互联网 发布:数组下标越界什么异常 编辑:程序博客网 时间:2024/04/24 13:20

你拥有3种魔法,可以用第一种魔法把 a 克的沙子变成 b 克金属,可以用第二种魔法把 c 克金属变成 d 克金子,可以用第三种魔法把 e 克金子变成 f 克沙子。 问你能否用初始有限量的沙子、金属、金子得到无限多的金子? 输入格式: 多组数据,每组只有一行包含输入6个整数 a,b,c,d,e,f (0<=a,b,c,d,e,f<=1000) 输出格式: 每组输出一行,YES和NO表示能否得到无限多的金子。


        //第一轮施展魔法变换,无论是否性的通,都进行下一步的魔法变换。因为每一步都有可能成为魔法变换的起点
        ji初始的金属_i += ji初始沙子_i / a * b;
        ji初始沙子_i -= ji初始沙子_i % a;

        ji初始金子_i += ji初始的金属_i / c * d;
       ji初始的金属_i -= ji初始的金属_i % c;

        ji初始沙子_i += ji初始金子_i / e * f;
        ji初始金子_i -= ji初始金子_i % e;

        if (ji初始沙子_i <= ci初始沙子_i) {//魔法变换後,沙子变少,金子肯定不能无限增多
            return "NO";
        }

        if(ji初始沙子_i =< a){//沙子小于阀值,魔法变换停止
            return "NO";
       }

        //进行第二轮魔法变换,再找到魔法变换起点後,必需保障每一步均可魔法变换,才能确保金子的无限增多
        ji初始的金属_i += ji初始沙子_i / a * b;

        if(ji初始的金属_i < c){//金属小于阀值,魔法变换停止
            return "NO";
        }

        ji初始金子_i += ji初始的金属_i / c * d;

        if(ji初始金子_i < e){//金子小于阀值,魔法变换停止
            return "NO";
        }

        return "YES";

0 0
原创粉丝点击