You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

凸多边形对角线数计算JS代码第16测试用例报错问题求解

问题分析

报错原因

  • 大整数精度丢失:JS内置Number类型为双精度浮点数,最大安全整数仅为2^53 - 1(约9e15)。当N取到1e9时,n*(n-3)的结果达到1e18量级,远超出安全整数范围,浮点数精度丢失导致计算结果错误,这就是第16个大数值测试用例不通过的核心原因。
  • 边界值处理缺失:当N<3时不存在符合要求的凸多边形,对角线总数应为0,但原公式直接计算会得到负数结果,不符合规则要求。

修复方案

使用JS ES2020新增的BigInt类型处理大整数运算,同时补全边界值判断,修正后代码如下:

const fs = require('fs');
const data = fs.readFileSync('input.txt', 'utf8');

const n = BigInt(data.trim());
const res = n < 3n ? 0n : n * (n - 3n) / 2n;
fs.writeFileSync('output.txt', res.toString(), 'utf8');

修复说明

  • BigInt支持任意精度的整数运算,哪怕N取到1e9甚至更大,都不会出现精度丢失问题。
  • 提前判断N<3的场景直接返回0,符合凸多边形对角线的实际计算规则。
  • 由于凸多边形对角线公式n*(n-3)/2的计算结果必然为整数,BigInt的整除运算无需额外取整处理。

内容的提问来源于stack exchange,提问作者Mukhammadyusuf Abdurakhimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:06:05