每日一题(5264: 买张公交卡吧)
台州oj
描述
crq是个无车一族,不过坐公交车可以打一个盹也不错,最近听说刷公交卡能打6折,还可以在1小时内免费换乘车1次(也就是在你上次刷卡付费后不超过1小时可以免费1次,但如果前一次免费则本次刷卡就不能免费了)。现在给出crq一天以内的坐车情况,问这一天共消费了多少元。假设公交车原价都是2元,而且每次都是刷卡消费,题目保证卡内余额充足。
输入
输入数据有多组,每组数据的第一行为正整数n(n<=20),表示乘坐的公交车趟数,接下来有n行,每行包括一个时间(格式20:00:00),时间均在同一天内24小时制,而且已经按照时间先后排序。
输出
每组输出一个小数,表示总共消费金额,保留1位小数。
样例输入
3
12:00:00
12:30:00
12:50:00
样例输出
2.4
二、代码
代码如下(示例):
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int n,a,b,c;
while(scanf("%d",&n)!=EOF)//输入多组数据
{
int num1=0,t=0,i,sum=0; //t是用来判断上次是否上过车
for(i=1;i<=n;i++)
{
scanf("%d:%d:%d",&a,&b,&c);
//用“%d:%d:%d的方式输入数据
int num=3600*a+60*b+c;
if(num-num1<=3600&&t==0)
//判断上下车的时间差是否在一个小时之内及小于3600
t=1; //满足条件t=1
else
{
sum=sum+2;
t=0;
}
num1=num; //num1记录下次的时间
}
printf("%.1f\n",sum*0.6);
//按格式输出
}
}