华为OD机试 E卷|响应报文时间

algorithm-geek / 2025-02-21 / 原文

华为OD机试 E卷|响应报文时间

0、关于本专栏 & 刷题交流群

本文收录于专栏【2024华为OD机试真题】,专栏共有上千道OD机试真题,包含详细解答思路、与四种代码实现(Python、Java、C++、JavaScript)。

点击文末链接加入【华为OD机试交流群】,和群友一起刷题备考。刷的越多,考试中遇到原题的概率就越大,永久、实时更新新题目。

1、题目详情

题目描述

IGMP协议中,有一个字段称作最大响应时间(Max Response Time),HOST收到查询报文,解折出MaxResponsetime字段后,需要在(0,MaxResponseTime)时间(s)内选取随机时间回应一个响应报文,如果在随机时间内收到一个新的查询报文,则会根据两者时间的大小,选取小的一方刷新回应时间。

最大响应时间有如下计算方式:

  • 当 Max Resp Code<128, Max Resp Time= Max Resp Code;

  • 当 Max Resp Code >= 128, Max Resp Time=(mant|0x10)<<(exp+3);

注:exp最大响应时间的高5~7位:mant为最大响应时间的低4位。

其中接收到的MaxRespCode最大值为 255,以上出现所有字段均为无符号数。

现在我们认为HOST收到查询报文时,选取的随机时间必定为最大值,现给出HOST收到查询报文个数 C,HOST收到该报文的时间T,以及查询报文的最大响应时间字段值M,请计算出HOST发送响应报文的时间。

输入描述

第一行为查询报文个数C,后续每行分别为HOST收到报文时间T,及最大响应时间M,以空格分割。

输出描述

HOST发送响应报文的时间。

示例输入

3
0 20
1 10
8 20

示例输出

11

收到3个报文,第0秒收到第1个报文,响应时间为20秒,则要到 0+20=20 秒响应;

第1秒收到第2个报文,响应时间为10秒,则要到1+10=11秒响应,与上面的报文的响应时间比较获得响应时间最小为11秒:

第8秒收到第3个报文,响应时间为20秒,则要到8+20=28秒响应,与第上面的报文的响应时间比较获得响应时间最小为11秒:

最终得到最小响应报文时间为11秒。

示例输入2

2
0 255
200 60

示例输出2

260

第0秒收到第1个报文,响应时间为255秒,则要到(15|0x10)<<(7+3)=31744秒响应;(mant=15,exp=7)

第200秒收到第2个报文,响应时间为60,则要到200+60=260秒响应,与上面的报文的响应时间比较获得响应时间最小为260秒;

最终得到最小响应报文时间为260秒。

详细解题思路、及代码实现可以订阅我的CSDN专栏:最最最新华为OD机试真题