求修复C++取余判断代码:无法处理n=0等边界情况
问题需求
给定四个均不超过10^6的整数m、n、k、l,要求实现以下逻辑:
- 当
m % n == k或m % n == l时,输出1 - 其他情况输出任意非1数字
- 禁止使用条件运算符
输入输出示例
12 8 3 4 // 输入 1 // 输出 0 5 1 2 // 输入 0 // 输出
现有实现代码
#include <iostream> using namespace std; int main() { int m, n, k, l; cin >> m >> n >> k >> l; cout << ((1 / (((m % (n + 1 / (n + 1))) - k) * ((m % (n + 1 / (n + 1))) - k) + 1)) - 1) * ((1 / (((m % (n + 1 / (n + 1))) - l) * ((m % (n + 1 / (n + 1))) - l) + 1)) - 1) + 1; return 0; }
问题与修复请求
现有代码存在缺陷:当输入0 0 0 0时,代码错误输出1,但实际n=0时取余操作无定义,应输出任意非1数字。此外,n=0的场景未被正确处理,导致逻辑错误,恳请帮忙修复代码,使其能覆盖所有合法输入情况。
内容的提问来源于stack exchange,提问作者boboc5
相关产品推荐
相关产品推荐

