一道有趣的题目007
发布时间: 2017年5月23日 12:10 最后更新: 2017年5月23日 12:24 时间限制: 1000ms 内存限制: 128M
一辆重型卡车欲穿过x千米的沙漠,卡车耗汽油为1升/千米,
卡车总载油能力为L公升。显然卡车装一次油是过不了沙漠的,
因此司机必须设法在沿途建立若干贮油点,使卡车能顺利穿过沙漠。
试问司机应怎样建立这些贮油点?每一贮油点应存储多少汽油,
才能使卡车以消耗最少汽油的代价通过沙漠?
输入包含两个整数x,L,分别表示沙漠的长度和卡车的总载油量.
编程计算及打印建立的贮油点序号,各贮油点距沙漠边沿出发的距离及存油量。
格式如下:
No. Distance(k.m.) Oil(litre)()
1 × × × ×
2 × × × ×
… … … … …
1000 500
1 0 3925 2 25 3500 3 63 3000 4 108 2500 5 163 2000 6 234 1500 7 334 1000 8 500 500
#include<stdio.h>
#include<math.h>
int pos[100000],oil[100000];
int main()
{
int i=2,j=1;
double pos[1000],oil[1000],x,l;
scanf("%lf%lf",&x,&l);
pos[1]=l;
oil[1]=l;
while(pos[i-1]<x)
{
pos[i]=floor(pos[i-1]+l/(2*i-1));
oil[i]=i*l;
i++;
}
i--;
pos[i]=x;
oil[i]=(x-pos[i-1])*(2*i+1)+oil[i-1];
i++;
for(i=i-1;i>=1;i--)
{
printf("%d %.0f %.0f\n",j,x-pos[i],oil[i]);
j++;
}
return 0;
}