B3658 [语言月赛202209] 口算练习 题解
Source & Knowledge
2022 年 9 月语言月赛,由洛谷网校入门计划/基础计划提供。
考察对数学库常用函数、C/C++ 中 / 的理解与运用。
文字题解
C/C++ 中,如果 x / y 会返回一个整数值,即
所以例如调用 floor(-3 / 2),其会计算为 floor(-1),进而返回 -1 而不是 -2。
为了解决这个问题,这里提供两种方法。
方法 x / y 转化为浮点数运算。使用强制类型转换。
double ans = (double) x / y;
ans = floor(ans);
cout << (int) ans << endl;
方法 if 语句进行判断。遇到负数情况特殊处理。
if (x % y == 0)
cout << x / y << endl;
else if (x * y > 0)
cout << x / y << endl;
else
cout << x / y - 1 << endl;