题意:汽车有两个标量:里程,油量。
给定一些数,若不加油进去,里程逐渐增大,油量减少;但若加油了,油量则会突然增大,这组数据应该放弃不用。
然后求出平均速度,再用最后油量求出能走多远。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<stdio.h> 2 #include<string.h> 3 const int maxn = 1005; 4 struct node{ 5 double dis,fuel; 6 }a[ maxn ]; 7 int main(){ 8 int n=0; 9 double aa,bb; 10 while( scanf("%lf%lf",&aa,&bb) && (aa!=-1.0&&bb!=-1.0) ){ 11 a[ n ].dis=aa,a[ n ].fuel=bb,n++; 12 while( scanf("%lf%lf",&aa,&bb)==2 ){ 13 if( aa==0.0&&bb==0.0 ) break; 14 a[ n ].dis=aa,a[ n ].fuel=bb,n++; 15 } 16 double dis,fuel; 17 dis=fuel=0; 18 for( int i=0;i<n-1;i++ ){ 19 if( a[i].fuel>a[i+1].fuel ){ 20 dis+=(a[i+1].dis-a[i].dis); 21 fuel+=(a[i].fuel-a[i+1].fuel); 22 } 23 } 24 //printf("dis:%lf fuel:%lf\n",dis,fuel); 25 double ans=a[n-1].fuel*dis/fuel; 26 // printf("ans:%.0lf\n",ans); 27 if(( ans-(double)((int)(ans)) )>0.5) printf("%.0lf\n",( (double)((int)(ans)) )+1.0); 28 else printf("%.0lf\n",( (double)((int)(ans)) )); 29 n=0; 30 } 31 return 0; 32 }