CF C. Fly

题目

题目大意:第一行给出一个数n,代表有n个点,第二行给出火箭的自重,第三行给出每个点去时每吨需要的燃料,第四行给出每个点返程时每吨需要的燃料。求出发时携带的最小燃料数

分析:这题我们只要逆向思维就很好的可以解决答案了,我们知道要携带的燃料是最少的话,那就是到达火星回来地球的时候,燃料一定为零,那我们就从最后一站开始计算 ,根据计算公式 消耗的燃料x=(x+s)/a[i] , 当前的火箭重量为 x=s/*(a[i]-1),s+=x;

若ai或者bi若等于1,消耗与载重1:1:(飞到了就耗完燃料)

#include<stdio.h>
int a[1001],b[1001];
int main( )
{
    int n,fa=0;
    double s,sum=0,x;
    scanf("%d%lf",&n,&s);
    for(int i=0 ; i<n ; i++)
    {
        scanf("%d",&a[i]);
        if(a[i]<=1)
        fa=1;
    }
    for(int i=0 ; i<n ; i++)
    {
        scanf("%d",&b[i]);
        if(b[i]<=1)
        fa=1;
    }
    if(fa==1)
    {
        printf("-1\n");
        return 0;
    }

    for(int i=n-1 ; i>=0 ; i--)
    {
        x=s/(a[i]-1),s+=x,sum+=x;
        x=s/(b[i]-1),s+=x,sum+=x;
    }
     printf("%.10f\n",sum);
}
View Code

 

posted @ 2018-07-31 15:52  shuai_hui  阅读(111)  评论(0编辑  收藏  举报