题目描述
IGMP协议中,有一个字段称作最大响应时间(Max Response Time),HOST收到查询报文,解析出MaxResponseTime字段后,需要在(0~MaxResponseTime)s )时间内选取随机时间回应一个响应报文,如果再随机时间内收到一个新的查询报文,则会根据两者时间的大小,选取小的一方刷新回应时间。
最大响应时间有如下计算方式:
当MaxRespCode < 128 ,MaxRespTime = MaxRespCode
当MaxRespCode = 128 ,MaxRespTime = (mant | 0x10) << (exp + 3)
|0|123|4567|
|1|exp|mant|
注: exp 最大响应时间的 高5~7位;mant 为最大响应时间的 低4位
其中接收到的 MaxRespCode 最大值为255,以上出现所有字段均为无符号数。
现在我们认为 HOST 接收到查询报文时,选取的随机时间必定为最大值。现给出 HOST 收到查询报文个数 C,HOST收到报文的时间 T,以及查询报文的最大响应时间字段值M ,请计算出 HOST 发送响应报文的时间。
输入描述
第一行为查询报文个数 C,后续每行分别为HOST收到报文时间 T,以及最大响应字段 M,以空格分割。
输出描述
HOST发送响应报文的时间。
ACM输入输出模式
如果你经常使用Leetcode,会知道letcode是不需要编写输入输出函数的。但是华为OD机考使用的是 ACM 模式,需要手动编写输入和输出。
所以最好在牛-客上提前熟悉这种模式。例如C++使用cin/cout
,python使用input()/print()
。JavaScript使用node的readline()
和console.log()
。Java 使用sacnner/system.out.print()
用例1
输入:
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
输出:
260
说明
第0秒收到第1个报文,响应时间为255秒,则要到(15 | 0x1