E-olymp:蛋糕。给出错误的答案

时间:2015-07-04 01:36:19

标签: c++ mathematical-optimization

Cake这是一个e-olymp编程问题。

  

为了纪念继承人Tutti的诞生,皇家厨师准备了一个巨大的蛋糕,这个蛋糕被放在桌上供三胖人使用。第一个胖子可以自己吃蛋糕t1小时,第二个 - t2小时,第三个 - t3小时。

     

这三个胖子可以在什么时间同时吃蛋糕?

当我在正常Gnu C++提交时,它提供了27%的准确结果,当我在Gnu C++ 4.7.1提交时,它会给出8%准确的结果?问题是什么??这是我的错吗?请帮助。

我的代码:

#include<iostream>
#include<cstdio>

using namespace std;

int main()
{

    double t1, t2, t3;
    scanf("%lf %lf %lf", &t1, &t2, &t3);

    double ans=(t1/3.0)+(t2/3.0)+(t3/3.0);
    ans=(ans/3.0);
    printf("%.2lf\n", ans);
    return 0;

}

2 个答案:

答案 0 :(得分:1)

你的逻辑错了。

想象一下,第一个人可以在1小时内吃掉整个蛋糕。

如果其他两个人帮忙,蛋糕会很快完成不到一小时

这是一个模拟该场景的输入。

1 999 999

您的程序计算所需的时间

((1/3.0)+(999/3.0)+(999/3.0)/3.0)

那是444.33小时。

答案 1 :(得分:0)

我的做法错了。 我必须使用这个规则: t1小时/蛋糕= 1/t1蛋糕/小时。

对于所有三个人,他们在一小时内吃1/t1+1/t2+1/t3个蛋糕。

在h小时内,他们吃h(1/t1+1/t2+1/t3)个蛋糕。

吃完整块蛋糕的时间必须满足h(1/t1+1/t2+1/t3)=1h=1/(1/t1+1/t2+1/t3).

代码将是:

double t1, t2, t3;
scanf("%lf %lf %lf", &t1, &t2, &t3);

double ans=1/((1/t1)+(1/t2)+(1/t3));
printf("%.2lf\n", ans);