POJ 2501 Average Speed --from lanshui_Yang

来源:互联网 发布:bobble是什么软件 编辑:程序博客网 时间:2024/05/18 02:15

Description

You have bought a car in order to drive from Waterloo to a big city. The odometer on their car is broken, so you cannot measure distance. But the speedometer and cruise control both work, so the car can maintain a constant speed which can be adjusted from time to time in response to speed limits, traffic jams, and border queues. You have a stopwatch and note the elapsed time every time the speed changes. From time to time you wonder, "how far have I come?". To solve this problem you must write a program to run on your laptop computer in the passenger seat.

Input

Standard input contains several lines of input: Each speed change is indicated by a line specifying the elapsed time since the beginning of the trip (hh:mm:ss), followed by the new speed in km/h. Each query is indicated by a line containing the elapsed time. At the outset of the trip the car is stationary. Elapsed times are given in non-decreasing order and there is at most one speed change at any given time.

Output

For each query in standard input, you should print a line giving the time and the distance travelled, in the format below.

Sample Input

00:00:01 10000:15:0100:30:0101:00:01 5003:00:0103:00:05 140

Sample Output

00:15:01 25.00 km00:30:01 50.00 km03:00:01 200.00 km
      题目大意 很简单 ,但有几点需要注意 :                                                                          第一 ,第一行 没有速度 要也要 输出 “0.00 km”;                                                    第二 ,输入数据时 ,用 scanf或是 cin 会 RE !! 要用 gets()~                                      第三 ,这一点比较奇怪 ,我写的这个程序,用G++交能AC ,但用C++交 会 RE~                     具体讲解请看代码:                                                                        
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>#include<cmath>using namespace std;int hh[100500],mm[100500],ss[100500];char s[1000];double speed[100500],lu[100500];int main(){    int i = 1,j;    memset(s,'\0',sizeof(s));    while (gets(s))    {        hh[i]=(s[0]-'0')*10 + (s[1]-'0');        mm[i]=(s[3]-'0')*10 + (s[4]-'0');        ss[i]=(s[6]-'0')*10 + (s[7]-'0');        lu[1] = 0;        int sumt;        if(s[8]==' ')        {            int l = strlen(s);            int k;            speed[i]=0;            for(k=9;k<l;k++)            {                speed[i]*=10;                speed[i]+=(s[k]-'0');            }            if(i > 1)            {                sumt = (hh[i]-hh[i-1])*3600 + (mm[i]-mm[i-1])*60 + (ss[i]-ss[i-1]);                lu[i] = sumt * speed[j]/3.6 + lu[i-1];            }            j=i;            i++;            memset(s,'\0',sizeof(s));            continue;        }        else        {            if(i > 1)            {                sumt = (hh[i]-hh[i-1])*3600 + (mm[i]-mm[i-1])*60 + (ss[i]-ss[i-1]);                lu[i] = sumt * speed[j]/3.6 + lu[i-1];                printf("%02d:%02d:%02d %.2f km\n",hh[i],mm[i],ss[i],lu[i]/1000);            }            else            printf("%02d:%02d:%02d %.2f km\n",hh[i],mm[i],ss[i],lu[i]/1000);            memset(s,'\0',sizeof(s));            i++;        }    }    return 0;}

原创粉丝点击