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); }