这道字符串的题目其实并不简单,因为中间有许多的细节需要注意,注意这里的精度设计是四舍五入
/*
* Author:lonelycatcher
* problem:HDU 1036
* Type:字符串处理
*/
#include <iostream>
#include<string>
#include<string.h>
#include<stdio.h>
using namespace std;
int N,num;
double dis;
int main()
{
setbuf(stdout,NULL);
int i;
cin>>N>>dis;
while(cin>>num)
{
string s;
int invalid=0;
int hour=0,min=0,sec=0;
for(i=0;i<N;i++)
{
cin>>s;
if(s[0]=='-')
{
invalid=1;
}
if(invalid)continue;
if(s.length()==8)
{
hour+=(s[0]-'0')*10+s[1]-'0';
min+=((s[3]-'0')*10+s[4]-'0');
sec+=((s[6]-'0')*10+s[7]-'0');
}
else
{
hour+=(s[0]-'0');
min+=((s[2]-'0')*10+s[3]-'0');
sec+=((s[5]-'0')*10+s[6]-'0');
}
}
if(invalid)
{
printf("%3d: -\n",num);
continue;
}
sec+=hour*3600+min*60;
double second=(double)sec/dis;
if(((int)(second*10))%10>=5)sec=(int)second+1;
else sec=(int)second;
min=sec/60;
sec=sec%60;
if(sec>=10)
{
printf("%3d: %d:%d min/km\n",num,min,sec);
continue;
}
printf("%3d: %d:0%d min/km\n",num,min,sec);
}
return 0;
}