java - 即使使用很长的错误答案,如何克服整数溢出问题?
问题描述
对于输入 2:100000,90000 得到错误的答案,即使我用了很长时间
import java.util.*;
import java.io.*;
class Main
{
public static void main(String[] args)
{
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int arr[] = new int[a];
for(int i=0;i<a;i++)
arr[i] = s.nextInt();
Arrays.sort(arr);
long sum=0;
sum=(arr[a-1])*(arr[a-2]);
System.out.println(sum);
}
}
即使使用很长的错误答案,如何克服整数溢出问题?
解决方案
sum=(arr[a-1])*(arr[a-2]);
这将一个int乘以一个int,然后将int结果(可能已经溢出)分配给一个long变量。
要使用长算术,请写
sum = (long) arr[a-1] * (long) arr[a-2];
你不需要两个演员表,但他们似乎更清楚。
推荐阅读
- node.js - 在 sequelize 中加入同一张表并在 excel 中打印
- python - 如何使用 matplotlib 将主要和次要刻度标签精确对齐
- templates - XSLT 先删除一些子节点,如果没有子节点,则删除父节点
- python - matmul:输入操作数 1 的核心维度 0 与 2 度不匹配
- javascript - AZDO 发布 Rest-API 的 Pipeline Gate 成功标准
- wordpress - 使用 Wordpress 编辑器在博客中编写 c 代码
- ruby - 有没有办法为使用 ruby-jmeter 运行的每个线程发送唯一值
- latex - R/考试中的答案列表按多列分布以节省纸张空间
- sql - 查找过去 1 个月中每个 JOB ID 的“发送总数”以及它在 Marketing Cloud 中发送到的“列表名称”
- javascript - 是否可以将 React 代码转换为 HTML、CSS、JavaScript?