L1-043 阅览室 - 团体程序设计天梯赛-练习集 (pintia.cn)

比较考验逻辑严谨性,最后的四舍五入部分也可以使用round函数,但是+0.5也可以简单实现
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
int id,t, hours, minutes,sum,cnt; //sum为总的阅读时间,cnt为当前有效借了几本书
char behavior,ch; //ch为':' 为了方便cin
for (int i = 0; i < n; i++)
{
cnt=0,sum=0,t = 0, hours = 0, minutes = 0;
//同一天借出去+还回来才算一次有效借书
int booked[1010] = { 0 }; //标识是否预定
int time[1010] = { 0 }; //标识开始时间或结束时间
while (1)
{
cin >> id >> behavior >> hours >> ch >> minutes;
if (behavior == 'S' && id) //开始借书 注意这里要判断id不为0 否则0 S 17:00的样例会卡死在这里
{
booked[id] = 1;
t = hours * 60 + minutes;
time[id] = t;
}
else if (behavior == 'E' && booked[id]==1) //结束借书
{
booked[id] = 0;
sum += (hours * 60 + minutes) - time[id];
cnt++;
}
else if (id == 0) //当前结束
{
if (cnt > 0) //如果有借书
{
cout << cnt <<" " << (int)(1.0*sum / cnt + 0.5) << endl;
}
else cout << "0 0" << endl;
break;
}
}
}
return 0;
}
本文介绍了一个关于团体程序设计的练习题目,涉及C++代码实现,主要任务是处理图书馆借阅系统的逻辑,包括时间的计算与四舍五入,确保同一天内借出和归还书籍被视为一次有效借阅。

5452

被折叠的 条评论
为什么被折叠?



