题目链接
题目描述
这是一个函数实现题。你需要在一个指定的类(Solution)中,完成一个名为 aTimesB 的函数。该函数接收两个 int 类型的参数,你需要计算这两个整数的乘积,并将结果作为函数的返回值。
关键点:注意函数的返回类型是 long 或 long long,这意味着乘积结果可能会超出 int 类型的表示范围。
平台工作模式:
- 你只需要填写
aTimesB函数的内部逻辑。 - 评测系统会自动调用你的函数并验证其返回值。
- 你不应该编写
main函数或任何输入/输出代码。
示例:
- 输入:
1000000000, 2000000000(由平台处理) - 你的函数被调用:
aTimesB(1000000000, 2000000000) - 你的函数应返回:
2000000000000000000(这是一个long long或long类型的值)
解题思路
这道题的核心是处理整数溢出 (Integer Overflow)。
-
识别溢出风险: 两个
int类型的变量相乘,其结果的大小可能超过一个int所能存储的最大值。例如,在大多数系统中,int是32位的,最大值约为。而示例中
,这个结果远超
int范围,但可以被64位的长整型 (long longin C++,longin Java) 存储。 -
防止计算过程中的溢出: 仅仅将函数的返回类型声明为长整型是不够的。如果你直接计算
Number1 * Number2,这个乘法会先在int类型下进行,如果结果溢出,就会得到一个错误的int值,然后再将这个错误的值赋给长整型。正确的做法是,在进行乘法运算之前,就将其中至少一个操作数强制类型转换 (cast) 为长整型。这样,整个乘法表达式就会在长整型的规则下进行计算,从而得到正确的完整结果。
- C++/Java:
(long long)Number1 * Number2
这样,
Number1首先被提升为长整型,然后与Number2相乘,Number2也会被自动提升为长整型,整个运算就不会溢出。 - C++/Java:
-
Python 的特殊性: Python 的
int类型支持任意精度,它会自动处理大数,不存在溢出问题。因此,在 Python 中直接相乘即可。
代码
注意:以下代码是你需要提交的全部内容,直接在牛客网给定的模板中填写 // write code here 部分即可。
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算两个参数的乘积
* @param Number1 int整型
* @param Number2 int整型
* @return long长整型
*/
long long aTimesB(int Number1, int Number2) {
// write code here
// 必须先将其中一个数转换为 long long,否则 int * int 的结果会溢出
return (long long)Number1 * Number2;
}
};
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 计算两个参数的乘积
* @param Number1 int整型
* @param Number2 int整型
* @return long长整型
*/
public long aTimesB (int Number1, int Number2) {
// write code here
// 必须先将其中一个数转换为 long,以避免 int * int 溢出
return (long)Number1 * Number2;
}
}
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 计算两个参数的乘积
# @param Number1 int整型
# @param Number2 int整型
# @return long长整型
#
class Solution:
def aTimesB(self, Number1: int, Number2: int) -> int:
# write code here
# Python 的 int 可以处理任意大的整数,不会溢出
return Number1 * Number2
算法及复杂度
- 算法: 基本算术运算(考虑数据类型)。
- 时间复杂度:
。整数乘法是一个基本的CPU指令,花费的时间是常数。对于Python中的大数运算,其复杂度略高,但通常也视为常数时间。
- 空间复杂度:
。函数调用过程中没有使用任何与输入大小相关的额外空间。

京公网安备 11010502036488号