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

程序本地编译器运行正常 提交CodeChef却报错(题目FLOW006)

代码错误原因分析
  • pow函数的浮点数精度问题:pow()是<math.h>提供的浮点数计算函数,受浮点数精度误差影响,部分场景下pow(10, k)的返回值会略小于理论整数值(例如pow(10,3)实际返回999.9999999999),强制转为int类型时会被截断为999,直接导致数位计算出错。不同平台的浮点数实现逻辑存在差异,这是本地运行正常、提交到CodeChef报错的核心原因。
  • 个位数输入的逻辑漏洞:当输入的N为1~9的个位数时,你初始化的c = pow(10,1)等于10,此时c < N的判断不成立,内层循环直接跳过,累加变量e始终为0,会输出错误结果0而非正确的N本身。
  • 边界值1000000的处理错误:题目允许N最大为1000000,现有循环逻辑处理该值时也会得到错误结果,正确数位和为1,你的代码会输出错误值。
修复方案

计算数位和不需要调用pow函数,使用整数取模、整除操作即可实现,逻辑更简单且完全没有精度问题,参考实现如下:

#include <stdio.h>
int main(void) {
    int T, N;
    scanf("%d", &T);
    while (T--) {
        scanf("%d", &N);
        int sum = 0;
        int temp = N;
        while (temp > 0) {
            sum += temp % 10;
            temp /= 10;
        }
        printf("%d\n", sum);
    }
    return 0;
}

内容的提问来源于stack exchange,提问作者Aseem Mittal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:54:03