[NOIP2004 普及组] 不高兴的津津

题目描述

津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每周妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。假设津津不会因为其它事不高兴,并且她的不高兴不会持续到第二天。请你帮忙检查一下津津下周的日程安排,看看下周她会不会不高兴;如果会的话,哪天最不高兴。

输入格式

输入包括 77 行数据,分别表示周一到周日的日程安排。每行包括两个小于 1010 的非负整数,用空格隔开,分别表示津津在学校上课的时间和妈妈安排她上课的时间。

输出格式

一个数字。如果不会不高兴则输出 00,如果会则输出最不高兴的是周几(用 1,2,3,4,5,6,71, 2, 3, 4, 5, 6, 7 分别表 示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

样例 #1

样例输入 #1

1
2
3
4
5
6
7
5 3
6 2
7 2
5 3
5 4
0 4
0 6

样例输出 #1

1
3

提示

NOIP2004 普及组第 1 题

  • 2021-10-27:增加一组 hack 数据
  • 2022-06-05:又增加一组 hack 数据

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
a1 = list(map(int, input().split()))
a2 = list(map(int, input().split()))
a3 = list(map(int, input().split()))
a4 = list(map(int, input().split()))
a5 = list(map(int, input().split()))
a6 = list(map(int, input().split()))
a7 = list(map(int, input().split()))
if a1[0] + a1[1] > 8:
print(1)
else:
if a2[0] + a2[1] > 8:
print(2)
else:
if a3[0] + a3[1] > 8:
print(3)
else:
if a4[0] + a4[1] > 8:
print(4)
else:
if a5[0] + a5[1] > 8:
print(5)
else:
if a6[0] + a6[1] > 8:
print(6)
else:
if a7[0] + a7[1] > 8:
print(7)
else:
print(0)

第一次我是这么做的,发现有一个没通过,检查一下发现是漏了一个条件,要输出最不高兴的,所以还要做一个时间的判断

改进一下代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
a1 = list(map(int, input().split()))
a2 = list(map(int, input().split()))
a3 = list(map(int, input().split()))
a4 = list(map(int, input().split()))
a5 = list(map(int, input().split()))
a6 = list(map(int, input().split()))
a7 = list(map(int, input().split()))
max_hours = 0
max_day = 0
if a1[0] + a1[1] > max_hours:
max_hours = a1[0] + a1[1]
max_day = 1

if a2[0] + a2[1] > max_hours:
max_hours = a2[0] + a2[1]
max_day = 2

if a3[0] + a3[1] > max_hours:
max_hours = a3[0] + a3[1]
max_day = 3

if a4[0] + a4[1] > max_hours:
max_hours = a4[0] + a4[1]
max_day = 4

if a5[0] + a5[1] > max_hours:
max_hours = a5[0] + a5[1]
max_day = 5

if a6[0] + a6[1] > max_hours:
max_hours = a6[0] + a6[1]
max_day = 6

if a7[0] + a7[1] > max_hours:
max_hours = a7[0] + a7[1]
max_day = 7

if max_hours <= 8:
max_day = 0
print(max_day)
###下雪了

完美AC

题解解释

这段代码首先从标准输入读取7行输入,每行包含两个整数,用空格分隔。这些输入分别存储在a1到a7的列表中。

然后,通过比较每一天的工作小时数(列表中的两个整数之和),找到工作最多的一天,并记录该天的索引。索引从1开始,表示一周中的第几天。

最后,如果最大工作小时数不超过8小时,则将max_day设置为0,表示一周中没有超过8小时的工作日。

最终输出的是最大工作小时数超过8小时的那一天的索引(从1到7),或者如果所有天的工作小时数都不超过8小时,则输出0。

知识点

复习一下读取输入的知识

CSDN发现一个大佬写的,搬运一下

https://blog.csdn.net/m0_46204224/article/details/109049999#/Input_44