【NOIP普及组】 不高兴的津津

【NOIP普及组】 不高兴的津津


💐The Begin💐点点关注,收藏不迷路💐

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

输入

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

输出

输出文件unhappy.out包括一行,这一行只包含一个数字。如果不会不高兴则输出0,如果会则输出最不高兴的是周几(用1, 2, 3, 4, 5, 6, 7分别表示周一,周二,周三,周四,周五,周六,周日)。如果有两天或两天以上不高兴的程度相当,则输出时间最靠前的一天。

样例输入

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

样例输出

3

C语言版本:

#include <stdio.h>

#define MAX_DAYS 7 // 一周的天数

int main() {
    int schoolTime[MAX_DAYS]; // st:存储每天在学校上课的时间
    int extraTime[MAX_DAYS]; // et:存储妈妈每天额外安排上课的时间
    int totalTime[MAX_DAYS]; // tt:存储每天总共上课的时间
    int i; // 循环计数变量

    // 读取周一到周日在学校上课的时间和妈妈安排上课的时间
    for (i = 0; i < MAX_DAYS; i++) {
        scanf("%d %d", &schoolTime[i], &extraTime[i]);
        // 计算每天总共上课的时间
        totalTime[i] = schoolTime[i] + extraTime[i];
    }

    int unhappyDay = 0; // ud:记录最不高兴的是周几,初始化为0表示没有不高兴的情况
    int maxUnhappy = 0; // mu:记录最大的不高兴程度(上课总时长),初始化为0

    // 遍历每天的总上课时长,找出最不高兴的一天
    for (i = 0; i < MAX_DAYS; i++) {
        if (totalTime[i] > 8) {
            if (totalTime[i] > maxUnhappy) {
                maxUnhappy = totalTime[i];
                unhappyDay = i + 1;
            }
        }
    }

    // 输出结果
    printf("%d\n", unhappyDay);

    return 0;
}

C++ 版本:

#include <iostream>
using namespace std;

const int MAX_DAYS = 7; // 一周的天数

int main() {
    int st[MAX_DAYS]; // st:存储每天在学校上课的时间
    int et[MAX_DAYS]; // et:存储妈妈每天额外安排上课的时间
    int tt[MAX_DAYS]; // tt:存储每天总共上课的时间
    int i; // 循环计数变量

    // 读取周一到周日在学校上课的时间和妈妈安排上课的时间
    for (i = 0; i < MAX_DAYS; i++) {
        cin >> st[i] >> et[i];
        // 计算每天总共上课的时间
        tt[i] = st[i] + et[i];
    }

    int ud = 0; // ud:记录最不高兴的是周几,初始化为0表示没有不高兴的情况
    int mu = 0; // mu:记录最大的不高兴程度(上课总时长),初始化为0

    // 遍历每天的总上课时长,找出最不高兴的一天
    for (i = 0; i < MAX_DAYS; i++) {
        if (tt[i] > 8) {
            if (tt[i] > mu) {
                mu = tt[i];
                ud = i + 1;
            }
        }
    }

    // 输出结果
    cout << ud << endl;

    return 0;
}

Java版本:

import java.util.Scanner;

public class UnhappySchedule {
    public static final int MAX_DAYS = 7; // 一周的天数

    public static void main(String[] args) {
        int[] schoolTime = new int[MAX_DAYS]; // st:存储每天在学校上课的时间
        int[] extraTime = new int[MAX_DAYS]; // et:存储妈妈每天额外安排上课的时间
        int[] totalTime = new int[MAX_DAYS]; // tt:存储每天总共上课的时间

        Scanner scanner = new Scanner(System.in);

        // 读取周一到周日在学校上课的时间和妈妈安排上课的时间
        for (int i = 0; i < MAX_DAYS; i++) {
            schoolTime[i] = scanner.nextInt();
            extraTime[i] = scanner.nextInt();
            // 计算每天总共上课的时间
            totalTime[i] = schoolTime[i] + extraTime[i];
        }

        int unhappyDay = 0; // ud:记录最不高兴的是周几,初始化为0表示没有不高兴的情况
        int maxUnhappy = 0; // mu:记录最大的不高兴程度(上课总时长),初始化为0

        // 遍历每天的总上课时长,找出最不高兴的一天
        for (int i = 0; i < MAX_DAYS; i++) {
            if (totalTime[i] > 8) {
                if (totalTime[i] > maxUnhappy) {
                    maxUnhappy = totalTime[i];
                    unhappyDay = i + 1;
                }
            }
        }

        // 输出结果
        System.out.println(unhappyDay);

        scanner.close();
    }
}

Python版本:

# MAX_DAYS表示一周的天数
MAX_DAYS = 7  

school_time = []  # st:存储每天在学校上课的时间
extra_time = []  # et:存储妈妈每天额外安排上课的时间
total_time = []  # tt:存储每天总共上课的时间

# 读取周一到周日在学校上课的时间和妈妈安排上课的时间
for i in range(MAX_DAYS):
    st, et = map(int, input().split())
    school_time.append(st)
    extra_time.append(et)
    total_time.append(st + et)

unhappy_day = 0  # ud:记录最不高兴的是周几,初始值为0表示没有不高兴的情况
max_unhappy = 0  # mu:记录最大的不高兴程度(上课总时长),初始值为0

# 遍历每天的总上课时长,找出最不高兴的一天
for i, tt in enumerate(total_time):
    if tt > 8:
        if tt > max_unhappy:
            max_unhappy = tt
            unhappy_day = i + 1

# 输出结果
print(unhappy_day)

在这里插入图片描述


💐The End💐点点关注,收藏不迷路💐
### 题目解析 题目要求判断津津在一周七天中的某一天是否会因为上课时间超过八小时而高兴,并找出她最高兴的那一天。如果某一天的总上课时间超过8小时,则认为津津高兴,且高兴程度与超过的时间成正比。如果有多个这样的天数,则取最早出现的那一天。如果没有任何一天超过8小时,则输出0。 ### 解题思路 1. 遍历一周的每一天(共7天),分别读取学校上课时间和课外课程时间。 2. 计算每一天的总上课时间。 3. 如果总时间超过8小时,则标记津津处于高兴状态。 4. 记录所有高兴的天数中,总时间最大的那一天。 5. 如果没有高兴的天数,输出0;否则输出最高兴的那一天。 ### 算法复杂度 - **时间复杂度**:O(1),因为只处理固定的7天。 - **空间复杂度**:O(1),仅使用少量变量存储输入和中间结果。 ### 代码实现 以下是一个简洁的C++实现: ```cpp #include <iostream> using namespace std; int main() { int max_time = 0; // 记录最大总时间 int day = 0; // 记录最高兴的天数 bool unhappy = false; // 标记是否高兴 for (int i = 1; i <= 7; ++i) { int school, extra; cin >> school >> extra; int total = school + extra; if (total > 8) { unhappy = true; if (total > max_time) { max_time = total; day = i; } } } if (!unhappy) { cout << 0 << endl; } else { cout << day << endl; } return 0; } ``` ### 代码说明 - 使用循环读取七天的数据。 - 对每一天计算总上课时间。 - 如果总时间超过8小时,则标记为高兴,并更新最大学习时间和对应的天数。 - 最后根据是否高兴输出对应的结果。 ### 测试样例 **输入:** ``` 5 3 6 2 7 2 5 3 5 4 0 4 0 6 ``` **输出:** ``` 3 ``` 说明:周三的总时间是9小时,是所有天中最高兴的一天。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Seal^_^

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值