关闭
likangxin123 2023-07-10 04:12 采纳率: 33.3%
浏览 62
已结题

帮帮我,题好难,不会

题目描述
AC鸭喜欢睡觉,它每天都要做

n件事,每件事情都在一个特定的时间,对于每件事情它都有一个闹钟设置,其中第

i个闹钟在每天


h
i

小时


m
i

分钟时
(
0



<
24
,
0



<
60
)
(0≤h
i

<24,0≤m
i

<60)触发。AC用24小时制,因此

=
12
,

=
59
h=12,m=59之后是

=
13
,

=
0
h=13,m=0,

=
23
,

=
59
h=23,m=59之后是

=
0
,

=
0
h=0,m=0。

这次AC鸭在

H小时

M分钟
(
0


<
24
,
0


<
60
)
(0≤H<24,0≤M<60)时候上床睡觉,并要求你回答,它在下一个闹钟前能睡多久。

输入格式
第一行包含整数

(
1



100
)
t(1≤t≤100)表示测试用例的数量。

每个测试用例第一行包含三个整数

,

,

n,H,M表示闹钟的数量和AC鸭睡觉的时间。

下面

n行每行包含两个数字


h
i




m
i

(
0



<
24
,
0



<
60
)
(0≤h
i

<24,0≤m
i

<60)表示闹钟的时间,允许同一个时间有多个闹铃。

输出格式
输出

t行,每行两个整数表示AC鸭睡觉的小时数和分钟数,如果它睡觉的那一刻有闹钟响起,答案将是0 0。

样例
输入数据 1
3
1 6 13
8 0
3 6 0
12 30
14 45
6 0
2 23 35
20 15
10 30
输出数据 1
1 47
0 0
10 55

展开全部

  • 写回答

3条回答 默认 最新

  • Lee哈 前端领域新星创作者 2023-07-10 04:22
    关注

    你的题目好像出现乱码了,重新发一下吧,帮你看看

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    likangxin123 2023-07-10 04:24

    img

    1
    回复
    Lee哈 回复 likangxin123 2023-07-10 04:48

    写好了你看看能不能过:

    1. #include <stdio.h>
    2. // 计算睡眠时间
    3. void calculateSleepTime(int n, int H, int M, int alarms[][2], int *sleepHours, int *sleepMinutes) {
    4. int sleepTotalMinutes = H * 60 + M; // 将AC鸭的睡觉时间转换为分钟数
    5. int minDifference = 24 * 60; // 初始化最小差值为一天的总分钟数
    6. for (int i = 0; i < n; i++) {
    7. int alarmHours = alarms[i][0];
    8. int alarmMinutes = alarms[i][1];
    9. int alarmTotalMinutes = alarmHours * 60 + alarmMinutes; // 将闹钟的时间转换为分钟数
    10. if (alarmTotalMinutes < sleepTotalMinutes) {
    11. alarmTotalMinutes += 24 * 60; // 如果闹钟时间小于睡觉时间,则加上一天的分钟数
    12. }
    13. int difference = alarmTotalMinutes - sleepTotalMinutes; // 计算差值
    14. if (difference < minDifference) {
    15. minDifference = difference;
    16. *sleepHours = difference / 60; // 计算睡觉的小时数
    17. *sleepMinutes = difference % 60; // 计算睡觉的分钟数
    18. }
    19. }
    20. }
    21. int main() {
    22. int t;
    23. scanf("%d", &t); // 输入测试用例的数量
    24. int results[t][2]; // 保存计算结果
    25. for (int i = 0; i < t; i++) {
    26. int n, H, M;
    27. scanf("%d%d%d", &n, &H, &M); // 输入闹钟的数量和AC鸭睡觉的时间
    28. int alarms[n][2];
    29. for (int j = 0; j < n; j++) {
    30. scanf("%d%d", &alarms[j][0], &alarms[j][1]); // 输入闹钟的时间
    31. }
    32. calculateSleepTime(n, H, M, alarms, &results[i][0], &results[i][1]); // 计算睡觉时间
    33. }
    34. for (int i = 0; i < t; i++) {
    35. printf("%d %d\n", results[i][0], results[i][1]); // 输出计算结果
    36. }
    37. return 0;
    38. }

    这是思路:
    1.首先,我们需要输入测试用例的数量t。
    2.对于每个测试用例,我们需要输入闹钟的数量n、AC鸭睡觉的时间H和M,以及每个闹钟的时间。
    3.我们定义一个二维数组alarms来保存每个闹钟的时间。
    4.接下来,我们定义一个函数calculateSleepTime,用于计算睡觉时间。该函数接受参数包括闹钟的数量n、AC鸭睡觉的时间H和M、二维数组alarms,以及指向睡觉小时数和分钟数的指针。
    5.在calculateSleepTime函数中,我们首先将AC鸭的睡觉时间转换为分钟数sleepTotalMinutes。
    6.然后,我们遍历每个闹钟,将闹钟的时间转换为分钟数alarmTotalMinutes。
    7.如果闹钟的时间小于睡觉时间,表示闹钟是在第二天的时间,我们需要将其加上一天的分钟数。
    8.计算差值difference,即闹钟时间与睡觉时间之间的分钟数差。
    9.如果差值小于当前的最小差值minDifference,则更新最小差值并更新睡觉小时数和分钟数的指针。
    10.最后,我们在主函数中使用循环处理每个测试用例,调用calculateSleepTime函数计算睡觉时间,并将结果保存在二维数组results中。
    最后,我们使用循环打印出所有计算的睡觉时间。
    如果有帮助给个采纳谢谢

    1
    回复
查看更多回答(2条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月17日
  • 已采纳回答 7月10日
  • 创建了问题 7月10日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部