小明为了节省花费,决定驾驶最老式的燃油汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升为单位)、每升汽油能行驶的距离D2、出发点每升汽油价格P和沿途油站数N(N可以为零),油站i离出发点的距离Di、每升汽油价格Pi(i=1,2,…,N)。计算结果四舍五入至小数点后两位。如果无法到达目的地,则输出“No Solution”。
输入五个数,即D1,C,D2,P,N。
接下来共N行,分别表示油站i离出发点的距离Di和每升汽油价格Pi,
输出最小费用
如无法到达目的地,则输出“No Solution”。
275.6 11.9 27.4 2.8 2 102.0 2.9 220.0 2.2
26.95
#include <stdio.h> int main(){ int i,n; double d1,c,d2,p,jiayou,shengyou=0.0,juli,jiage=0.0,s=0.0; double d[100],pi[100]; scanf("%f %f %f %f %d",&d1,&c,&d2,&p,&n); for(i=1;i<=n;i++){ scanf("%f %f",&d[i],&pi[i]); } pi[0]=p; d[0]=0.0; for(i=0;i<n;i++){ if(pi[i]<pi[i+1]){ if((shengyou+c)*d2<(d[i+1]-d[i])){ printf("No Solution"); break; } else{ jiage += c*pi[i]; s += c*d1; } } else { juli=d[i+1]-d[i]; jiayou=juli/d2-shengyou; jiage += jiayou*pi[i]; s += juli; } } s=d1-s; jiayou=s/d2-shengyou; jiage += jiayou*pi[n]; printf("%.2f\n",jiage); return 0; } //d1:两个城市的距离 //c:汽车的容量 //d2:每升汽油能行驶的距离 //p:刚开始每升汽油的价格 //n:油站数 //di:离出发点的距离 //pi:每升汽油的价格