C-FLY(思维+数学)CodeForces 1011C

版权声明:莉莉莉 https://blog.csdn.net/qq_41700151/article/details/81432605

题目:http://codeforces.com/problemset/problem/1011/C

题意:给你一个飞船,你从地球到火星再回来,飞船去的时候经过每个星球都要消耗燃料,回来的时候一步返回不消耗任何燃料,已知飞船的重量和每个星球起飞和落下1吨燃料能支持多少重量的飞船起飞,求出最少需要的燃油的质量。

思路:这个题要从后往前推,设 火箭加燃油的总质量为x,燃油的质量为y,那么,
x+y/a[i]=y,得到y=x/(a[i]-1)

#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <set>
#include <map>
using namespace std;
double a[1005];
double b[1005];
int main()
{
    int n,flag=0,i;
    double m,sum,y;
    scanf("%d%lf",&n,&m);
    sum=0;
    for( i=1; i<=n; i++)
    {
        scanf("%lf",&a[i]);
        if(a[i]<=1)
            flag=1;
    }
    for( i=1; i<=n; i++)
    {
        scanf("%lf",&b[i]);
        if(b[i]<=1)
            flag=1;
    }

    if(flag==1)
    {
        cout<<"-1"<<endl;
        return 0;
    }
    for(int i=1; i<=n; i++)
    {
        y=m/(a[i]-1);
        m+=y;
        sum+=y;
        y=m/(b[i]-1);
        m+=y;
        sum+=y;

    }
    printf("%.10lf\n",sum);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41700151/article/details/81432605
今日推荐