华为 OD 机试 2025B 卷 – 报文响应时间 (C++、Python、Java、JS、Go)
题目背景
在现代分布式系统中,性能优化至关重要,尤其是针对响应时间的优化。你需要设计一个程序来模拟报文的响应时间计算,帮助企业优化其网络请求响应能力。
给定一个请求,程序需要计算其报文的响应时间(以毫秒为单位),并输出给定请求的响应时间。报文的响应时间可能会受到以下因素的影响:
- 传输时间
- 计算时间
- 网络延迟等
要求在不同的编程语言中实现计算响应时间的功能。
输入
输入是一个整数 N
,表示报文的响应时间测量次数。接下来,输入 N
行,每行包含两个整数:
T
: 传输时间(毫秒)C
: 计算时间(毫秒)
输出要求:
- 对于每个输入,计算该报文的响应时间,并输出。
输出
对于每个报文请求,输出一个整数,表示该报文的总响应时间(以毫秒为单位)。
示例输入
3
10 20
5 30
15 25
示例输出
30
35
40
C++ 实现
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
while (N--) {
int T, C;
cin >> T >> C;
cout << T + C << endl;
}
return 0;
}
解释:
- 输入:首先读取整数
N
,表示有多少次请求。接下来,逐行读取每个请求的传输时间和计算时间。 - 输出:每个请求的响应时间就是传输时间和计算时间之和。
Python 实现
def main():
N = int(input()) # 读取请求次数
for _ in range(N):
T, C = map(int, input().split()) # 读取传输时间和计算时间
print(T + C) # 输出响应时间
if __name__ == "__main__":
main()
解释:
- 输入:通过
input()
获取输入数据,使用map()
处理每行输入的两个整数(传输时间和计算时间)。 - 输出:直接输出计算结果
T + C
。
Java 实现
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt(); // 读取请求次数
while (N-- > 0) {
int T = scanner.nextInt();
int C = scanner.nextInt();
System.out.println(T + C); // 输出响应时间
}
}
}
解释:
- 输入:通过
Scanner
类读取输入数据,首先读取请求次数N
,然后逐行读取每个报文的传输时间和计算时间。 - 输出:使用
System.out.println()
输出响应时间。
JavaScript 实现
function main() {
let N = parseInt(prompt()); // 读取请求次数
for (let i = 0; i < N; i++) {
let [T, C] = prompt().split(' ').map(Number); // 读取传输时间和计算时间
console.log(T + C); // 输出响应时间
}
}
main();
解释:
- 输入:通过
prompt()
获取用户输入,使用split()
将输入字符串分隔并转换为整数。 - 输出:直接使用
console.log()
输出响应时间。
Go 实现
package main
import (
"fmt"
)
func main() {
var N int
fmt.Scan(&N) // 读取请求次数
for i := 0; i < N; i++ {
var T, C int
fmt.Scan(&T, &C) // 读取传输时间和计算时间
fmt.Println(T + C) // 输出响应时间
}
}
解释:
- 输入:通过
fmt.Scan()
获取输入数据,首先读取请求次数N
,然后逐行读取每个报文的传输时间和计算时间。 - 输出:使用
fmt.Println()
输出响应时间。
时间复杂度分析
- 对于每种实现,算法的时间复杂度为 O(N),其中
N
是请求次数。 - 每个请求需要读取两个整数并进行加法计算,时间复杂度是常数级的,因此总时间复杂度是 O(N)。
总结
无论是在 C++、Python、Java、JavaScript 还是 Go 中,这道题目的核心思路是读取输入数据并计算每个报文的响应时间。每种语言的实现方式有所不同,但解决思路是一致的:读取输入、进行计算、输出结果。
通过这道题目,你可以熟悉不同编程语言中的输入输出处理,并能够优化自己的算法设计。
发表回复