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

为何CODECHEF中输出一致的两段代码提交结果不同?

问题:CODECHEF ZOOZ题两段代码输出一致却一个AC一个WA的原因

问题背景

我在CODECHEF的ZOOZ题目中提交了两段代码,肉眼看两段代码对测试用例的输出结果一致,但CODE 1提交成功,CODE 2却提交失败,想搞清楚其中的原因。

CODE 1(提交成功)

int t = in.nextInt();
while((t--)>0){
    int n = in.nextInt();
    for(int j=0;j<n;j++){
        if(j==0 || j==n-1)
            System.out.print("1");
        else
           System.out.print("0");
    }
    System.out.print("\n");
}

CODE 2(提交失败)

int t = in.nextInt();
while((t--)>0){
    int n = in.nextInt();
    System.out.println((int)Math.pow(10,n-1)+1);
}

样例测试用例

2
4
3

样例输出

1001
101

失败原因分析

CODE 2的问题出在数值溢出和浮点数精度上:

  • int类型溢出:int的取值范围是-2^31到2^31-1(即-2147483648到2147483647)。当n≥10时,Math.pow(10,n-1)的结果是109及以上,n=11时,1010=10000000000远超过int最大值,强制转int会直接溢出,得到错误的负数或乱码值。
  • 浮点数精度丢失:Math.pow返回double类型,double只能精确表示253以内的整数。当n-1≥17时,10(n-1)会超过2^53,此时double无法精确存储这个整数,转int时会得到错误数值。

而CODE 1直接通过字符串拼接输出结果,完全避开了数值类型的限制和精度问题,无论n在题目允许的范围内多大,都能正确输出符合要求的字符串。

内容的提问来源于stack exchange,提问作者varsha Sharma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:45:12