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

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秒。

java代码

package odTest;

import java.util.Arrays;
import java.util.Scanner;

public class responseTime {
	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int num = Integer.parseInt(scanner.nextLine());
		int[] maxRespTimes = new int[num];
		for(int i=0;i<num;i++) {
			int[] inputs=Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();
			maxRespTimes[i] =inputs[0] + estimate(inputs[1]);
		}
		Arrays.sort(maxRespTimes);
		System.out.println(maxRespTimes[0]);
	}
	
	public static int estimate(int num) {
		if(num<128) {
			return num;
		}else {
		       // 对于大于或等于128的响应代码,分解出指数部分
		       int exp = (num >> 7) & 0x7F; // 取高7位作为exp
		       // 分解出尾数部分
		       int mant = num & 0x7F;      // 取低7位作为mant
		       // 使用指数和尾数计算最大响应时间
		       // 将尾数部分与0x10进行或操作,以设置隐含的1,并将结果左移(exp + 3)位,以考虑指数部分
		       return ((mant | 0x10) << (exp + 3));       
		}	
	}

}

<think>好的,用户需要华为ODE2025的相关题或资料。首先,我要确认自己是否有这些最新的资料。不过,根据现有的知识库,可能没有直接提到2025年的E,因为时间上可能还未发布。但用户可能想要的是最新或即将到来的考试信息。 接下来,我需要查看用户提供的引用内容。引用[1]提到了2023年B的Python/JS/C/C++题,引用[2]推荐了2024年的真题和OJ平台。这说明用户可能希望获取类似的资源,但针对2025年的E。 由于2025年的资料可能尚未公开,我需要建议用户如何获取或准备。首先,建议参考历年真题,因为题型和考点可能有延续性。例如,2023和2024年的题目可以帮助用户熟悉考试模式。然后,推荐OJ平台进行练习,这符合引用[2]的内容。 另外,用户可能希望得到具体的题目示例,比如二进制相关的问题,如引用[1]中的“出错的或电路”题目。可以提供一个类似的示例问题,展示如何解决这类题目,帮助用户练习。 还需要提醒用户注意考试的变化,虽然具体2025年的内容未知,但通常华为OD会涵盖算法、数据结构、编程基础等。建议用户关注官方动态或可靠的教育平台获取最新信息。 最后,确保回答符合格式要求:使用中文,数学公式用$...$或$$...$$,生成相关问题,结构清晰。需要避免提及无法确认的信息,比如2025年E的具体内容,而是提供可行的准备方法和资源。</think>关于华为ODE2025的题或资料,目前尚未有官方公开的具体信息。不过根据历年规律及公开资源,可提供以下备考建议和参考方向: ### 一、备考建议 1. **核心题型范围** - 算法与数据结构:如动态规划(背包问题)、二叉树遍历(层序遍历)、图论(最短路径)等 - 数学逻辑:涉及二进制运算(如$n \& (n-1)$计算1的个数)、位操作等[^1] - 字符串处理:如回文判断、子串匹配等 2. **编程语言选择** 支持Python/C++/Java/JavaScript,建议选择熟练度高的语言,例如: ```python # 示例:二进制位计数(参考题型) def count_bits(n): return bin(n).count('1') ``` 3. **练习平台推荐** - 使用**在线OJ系统**模拟真实考试环境(如LeetCode、牛客网)[^2] - 重点练习华为OD历年真题(如2023年B“出错的或电路”) ### 二、参考题目示例(二进制相关) **题目描述** 设计一个函数,计算两个二进制字符串异或后包含连续1的最长子串长度。 例如输入`a="1010"`, `b="1101"`,异或结果为`0111`,最长连续1的长度为3。 **代码实现** ```python def max_xor_ones(a: str, b: str) -> int: xor_str = bin(int(a,2) ^ int(b,2))[2:] max_len = current = 0 for c in xor_str: current = current + 1 if c == '1' else 0 max_len = max(max_len, current) return max_len ``` ### 三、资料获取渠道 1. 官方渠道:华为招聘官网发布的最新考大纲 2. 教育平台:优快云、牛客网等社区的OD专栏 3. 模拟练习:使用支持华为OD题型的OJ平台进行专项训练
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值