B3658 [语言月赛202209] 口算练习 题解

· · 题解

Source & Knowledge

2022 年 9 月语言月赛,由洛谷网校入门计划/基础计划提供。

考察对数学库常用函数、C/C++ 中 / 的理解与运用。

文字题解

C/C++ 中,如果 x, y 是整数,x / y 会返回一个整数值,即 \dfrac xy0 取整的值。

所以例如调用 floor(-3 / 2),其会计算为 floor(-1),进而返回 -1 而不是 -2

为了解决这个问题,这里提供两种方法。

方法 1:考虑将 x / y 转化为浮点数运算。使用强制类型转换。

double ans = (double) x / y;
ans = floor(ans);
cout << (int) ans << endl;

方法 2:使用 if 语句进行判断。遇到负数情况特殊处理。

if (x % y == 0)
    cout << x / y << endl;
else if (x * y > 0)
    cout << x / y << endl;
else 
    cout << x / y - 1 << endl;

视频题解