目录
L1-043 阅览室
问题描述:
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S
键,程序开始计时;当读者还书时,管理员输入书号并按下E
键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S
没有E
,或者只有E
没有S
的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。
输入格式:
输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:
书号
([1, 1000]内的整数) 键值
(S
或E
) 发生时间
(hh:mm
,其中hh
是[0,23]内的整数,mm
是[0, 59]内整数)
每一天的纪录保证按时间递增的顺序给出。
输出格式:
对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。
输入样例:
3
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
输出样例:
2 196
0 0
1 60
实现代码(没全过):
#include<iostream>
#include<cstring>
using namespace std;
const int N = 1010;
int book[N];
int tim[N];
int main()
{
int d;
cin >> d;
int count = 0;
int sumtime = 0;
int count2 = 0;
while (true)
{
char f;
int b, h, m;
scanf("%d %c %d:%d", &b, &f, &h, &m);
if (b == 0)
{
count2++;
int ptim = sumtime * 1.0/ count + 0.5;
if (count == 0) puts("0 0");
else cout << count << " " << ptim << endl;
sumtime = 0;//清零
count = 0;
memset(book, 0, sizeof book);
memset(tim, 0, sizeof tim);
}
if (count2 == d) break;
if (f == 'S')
{
book[b]++;
tim[b] = h * 60 + m;
}
else if (f == 'E' && book[b] == 1)
{
count++;
sumtime += h * 60 + m - tim[b];
}
}
}
L1-044 稳赢
问题描述:
大家应该都会玩“锤子剪刀布”的游戏:两人同时给出手势,胜负规则如图所示:
现要求你编写一个稳赢不输的程序,根据对方的出招,给出对应的赢招。但是!为了不让对方输得太惨,你需要每隔K次就让一个平局。
输入格式:
输入首先在第一行给出正整数K(≤10),即平局间隔的次数。随后每行给出对方的一次出招:ChuiZi
代表“锤子”、JianDao
代表“剪刀”、Bu
代表“布”。End
代表输入结束,这一行不要作为出招处理。
输出格式:
对每一个输入的出招,按要求输出稳赢或平局的招式。每招占一行。
输入样例:
2
ChuiZi
JianDao
Bu
JianDao
Bu
ChuiZi
ChuiZi
End
输出样例:
Bu
ChuiZi
Bu
ChuiZi
JianDao
ChuiZi
Bu
实现代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
int n;
cin >> n;
n += 1;
string flag;
int count = 0;
while (true)
{
count++;
cin >> flag;
if (flag == "End") break;
if (count % n == 0)
{
cout << flag << endl;
continue;
}
if (flag == "Bu") puts("JianDao");
else if (flag == "ChuiZi") puts("Bu");
else puts("ChuiZi");
}
}
L1-045 宇宙无敌大招呼
问题描述:
据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。
输入格式:
输入在第一行给出一个星球的名字S
,是一个由不超过7个英文字母组成的单词,以回车结束。
输出格式:
在一行中输出Hello S
,跟输入的S
星球打个招呼。
输入样例:
Mars
输出样例:
Hello Mars
实现代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
cin >> s;
cout <<"Hello " << s <<endl;
}