nyoj 949哈利波特(细节题)

哈利波特

时间限制: 1000 ms  |  内存限制: 65535 KB
难度: 3
描述

Harry 新学了三种魔法,他可以用第一种魔法把 a 克的沙子变成 b 克金属,可以用第二种魔法把 c 克金属变成 d 克金子,可以用第三种魔法把 e 克金子变成 f 克沙子。Harry 的两个好朋友Ron和Hermione知道了非常高兴,但是Ron和Hermione有个分歧,Ron觉得Harry可以用这三种魔法获得无限的金子,Hermione觉得不能获得无限多的。Harry想知道到底谁是对的

输入
输入6个整数 a,b,c,d,e,f 
(0<=a,b,c,d,e,f<=1000)
输出
输出谁是对的,如果Ron是对的输出“Ron”,否则输出“Hermione”
样例输入
100 200 250 150 200 250
100 50 50 200 200 100
1 1 0 1 1 1
100 1 100 1 0 1
样例输出
Ron
Hermione
Ron
Ron
上传者

ACM_王莹

思路:正向黄金 《逆向黄金(Ron)

正向 :k=b/c*d

逆向: q=(k/e)*f

w=(q/a)*b

p=(w/c)*d//逆向黄金

要注意,输入可以有0 所以

1.a=0 bcd 时候 无限黄金ron c=0&&d 无限变出金子 ron

2.当(a=0||c=0||e=0)&&b、d、f 也是无限金子

3.当(a==0&&b==0)||(e==0&&f==0)||(c==0&&d==0)  herminoe中间有一个环节不能转换

(用的syy的代码 比我写的更简单)


 
#include<stdio.h>
int main()
{
    double a,b,c,d,e,f;
    while(~scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&e,&f))
    {
        if(c==0&&d)
        {
            printf("Ron\n");
            continue;
        }
        if(a==0&&b&&c&&d)
        {
            printf("Ron\n");
            continue;
        }
        if((a==0||c==0||e==0)&&b&&d&&f)
        {
            printf("Ron\n");
            continue;
        }
        if((a==0&&b==0)||(e==0&&f==0)||(c==0&&d==0))
        {
            printf("Hermione\n");
            continue;
        }
        double k=(b/c)*d;
        double q=(k/e)*f;
        double w=(q/a)*b;
        double p=(w/c)*d;
        if(p>k)
            printf("Ron\n");
        else
            printf("Hermione\n");
    }
    return 0;
}  



你可能感兴趣的:(C++,动态规划)