我遗漏了哪些测试用例?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; }
问题分析与修正
你的代码主要存在两个问题:
- 未正确处理K=0的场景:当K=0时,无法移除任何物品,剩余数量应为N,但你的代码会进入else分支输出0,这会导致错误。
- 输出格式问题:你的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
相关产品推荐
相关产品推荐

