为什么C语言代码本地IDE正常,提交Codeforces报text1运行时错误?
错误排查与修复方案
1. 报错根因
退出码 -1073741676 对应除零/模零非法运算异常,触发场景如下:
- 当输入的两个数
a和b相等时,sub = abs(a-b)的计算结果为0 - 后续执行
a%sub、b%sub操作时,相当于对0取模,直接触发运行时崩溃,这就是提交失败的核心原因。
2. 其他潜在问题
- 输出缺少换行符:当前
printf语句没有加\n,多个测试用例的输出会拼接成一行,不符合Codeforces的输出格式要求,即使修复崩溃问题也会被判答案错误。 - 函数名冲突:自定义的
abs函数和标准库中处理int类型的abs函数同名,在部分编译器环境下可能产生符号歧义,建议更换自定义函数名避免冲突。
3. 修复后代码
#include<stdio.h> inline long long int llabs_custom(long long int a){ return a >= 0 ? a : -a; } inline long long int MIN(long long int a,long long int b){ return a < b ? a : b; } int main(){ int t; scanf("%d",&t); for(int j=0;j<t;j++){ long long int a,b; scanf("%lld %lld",&a,&b); long long int sub = llabs_custom(a - b); // 特判两数相等的情况,避免模零错误 if(sub == 0){ printf("0 0\n"); continue; } long long int min_val = MIN(a,b); long long int i = 0; while(a % sub || b % sub) { if(i >= min_val) break; i++; a++; b++; } min_val = MIN(i, min_val); printf("%lld %lld\n", sub, min_val); } return 0; }
内容的提问来源于stack exchange,提问作者Adeshen
相关产品推荐
相关产品推荐

