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

我遗漏了哪些测试用例?C语言提交CodeChef未通过求助

问题描述

题目给定T组测试用例,每组包含两个整数N和K,要求计算对应结果。我写的代码能通过题目给出的样例,但提交到CodeChef后未被AC,已知很多用户都在这道题上出错,我自己找不到遗漏的测试用例,希望得到帮助。

(注:原题题目核心需求为计算当每次可移除K个物品时,最终剩余的物品数量;平台数据显示该题正确率低于常规题目)

#include <stdio.h>

int main(void) {
    int T;
    scanf("%d",&T);
    for(int i=0;i<T;i++)
    {
        int N,K;
        scanf("%d %d",&N,&K);
        if(K!=0 && N>K)
        {
            printf("%d \n", (N%K));
        }
        else if(N<K)
        {
            printf("%d \n", N);
        }
        else
        {
            printf("0 \n");
        }
    }
    return 0;
}
问题分析与修正

你的代码主要存在两个问题:

  1. 未正确处理K=0的场景:当K=0时,无法移除任何物品,剩余数量应为N,但你的代码会进入else分支输出0,这会导致错误。
  2. 输出格式问题:你的printf语句中"%d \n"包含多余空格,部分OJ对输出格式要求严格,多余空格会导致判定为错误。

错误测试用例举例

  • 输入:1 5 0 → 你的代码输出0 ,正确输出应为5
  • 输入:1 3 0 → 你的代码输出0,正确输出应为3

修正后的代码

可以简化逻辑,直接处理K=0的情况,其余场景用取余覆盖所有情况(因为N<K时N%K=N,N=K时N%K=0):

#include <stdio.h>

int main(void) {
    int T;
    scanf("%d", &T);
    for (int i = 0; i < T; i++) {
        int N, K;
        scanf("%d %d", &N, &K);
        if (K == 0) {
            printf("%d\n", N);
        } else {
            printf("%d\n", N % K);
        }
    }
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:43:11