1 条题解
-
0
【例81.1】 计算(a+b)/c的值
解题思路
先判断除数c是否为0。非零时求s=a+b,C++整数商向零截断;若有余数且s、c异号,则商再减1才是数学向下取整。
正确性说明
依照上述推导,逐步维护已处理部分的有效状态。每一步都完成当前项的贡献且不改变已确定的次序,结束时输出的状态恰好对应题目要求。
易错点
负数不能直接整数除法当floor;除0输出完整固定文字。
复杂度
时间O(1),空间O(1)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); long long a, b, c; cin >> a >> b >> c; if (c == 0) cout << "Division by zero condition\n"; else { long long s = a + b, q = s / c; if (s % c != 0 && ((s < 0) != (c < 0))) q--; cout << q << "\n"; } return 0; }
- 1