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

CodeChef提交求1~N和的C#代码结果正确却判Wrong Answer原因

问题描述

给定数字N,求1到N所有数的和。

输入输出要求

  • 输入:第一行包含数字N
  • 输出:单独一行打印答案

约束条件

1 ≤ N ≤ 10^9

样例

  • 样例输入1:4
  • 样例输出1:10
  • 样例输入2:8
  • 样例输出2:36

报错原因分析

Wrong Answer的核心问题是使用double类型存储整数运算结果,存在两个致命问题:

  1. 精度丢失:double是双精度浮点数,仅能精确表示不超过2^53(约9e15)的整数。当N取最大值1e9时,求和结果约为5e17,远大于double的精确整数范围,计算结果会出现偏差。
  2. 输出格式错误:double类型输出整数结果时会自动携带小数后缀,比如结果为10时会输出10.0,和题目要求的纯整数输出格式不符,直接被判错。
  3. 额外冗余输入:末尾的Console.ReadLine()会导致程序等待额外输入,部分判题环境下会触发超时或者运行错误。

修正后代码
using System;
    
public class Test
{
    public static void Main()
    {   
        long N = Convert.ToInt64(Console.ReadLine());
        long sum = N * (N + 1) / 2;
        Console.WriteLine(sum);
    }
}

修正点说明

  • 用long(64位有符号整数)替代double,取值上限约为9e18,完全覆盖1e9场景下的求和结果,无精度丢失问题
  • 直接输出整数类型的计算结果,格式完全符合题目要求
  • 删除冗余的输入读取逻辑,避免判题流程异常

内容的提问来源于stack exchange,提问作者Ujjwal Abhishek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:54:06