题目链接

a 乘 b 问题(函数)

题目描述

这是一个函数实现题。你需要在一个指定的类(Solution)中,完成一个名为 aTimesB 的函数。该函数接收两个 int 类型的参数,你需要计算这两个整数的乘积,并将结果作为函数的返回值。

关键点:注意函数的返回类型是 longlong long,这意味着乘积结果可能会超出 int 类型的表示范围。

平台工作模式:

  • 你只需要填写 aTimesB 函数的内部逻辑。
  • 评测系统会自动调用你的函数并验证其返回值。
  • 不应该编写 main 函数或任何输入/输出代码。

示例:

  • 输入: 1000000000, 2000000000 (由平台处理)
  • 你的函数被调用: aTimesB(1000000000, 2000000000)
  • 你的函数应返回: 2000000000000000000 (这是一个 long longlong 类型的值)

解题思路

这道题的核心是处理整数溢出 (Integer Overflow)

  1. 识别溢出风险: 两个 int 类型的变量相乘,其结果的大小可能超过一个 int 所能存储的最大值。例如,在大多数系统中,int 是32位的,最大值约为 。而示例中 ,这个结果远超 int 范围,但可以被64位的长整型 (long long in C++, long in Java) 存储。

  2. 防止计算过程中的溢出: 仅仅将函数的返回类型声明为长整型是不够的。如果你直接计算 Number1 * Number2,这个乘法会先在 int 类型下进行,如果结果溢出,就会得到一个错误的 int 值,然后再将这个错误的值赋给长整型。

    正确的做法是,在进行乘法运算之前,就将其中至少一个操作数强制类型转换 (cast) 为长整型。这样,整个乘法表达式就会在长整型的规则下进行计算,从而得到正确的完整结果。

    • C++/Java: (long long)Number1 * Number2

    这样,Number1 首先被提升为长整型,然后与 Number2 相乘,Number2 也会被自动提升为长整型,整个运算就不会溢出。

  3. 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中的大数运算,其复杂度略高,但通常也视为常数时间。
  • 空间复杂度: 。函数调用过程中没有使用任何与输入大小相关的额外空间。