如何找到专业制作企业网站和开发APP的昆明公司?
摘要:专业制作企业网站,昆明开发app公司,女性健康网站源码,短视频免费素材网站题目 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法
专业制作企业网站,昆明开发app公司,女性健康网站源码,短视频免费素材网站题目
给你两个整数#xff0c;被除数 dividend 和除数 divisor。将两数相除#xff0c;要求 不使用 乘法、除法和取余运算。
整数除法应该向零截断#xff0c;也就是截去#xff08;truncate#xff09;其小数部分。例如#xff0c;8.345 将被截断为 8 #xff0c;-2.…题目
给你两个整数被除数 dividend 和除数 divisor。将两数相除要求 不使用 乘法、除法和取余运算。
整数除法应该向零截断也就是截去truncate其小数部分。例如8.345 将被截断为 8 -2.7335 将被截断至 -2 。
返回被除数 dividend 除以除数 divisor 得到的 商 。
注意假设我们的环境只能存储 32 位 有符号整数其数值范围是 [−231, 231 − 1] 。本题中如果商 严格大于 231 − 1 则返回 231 − 1 如果商 严格小于 -231 则返回 -231 。 示例 1:
输入: dividend 10, divisor 3
输出: 3
解释: 10/3 3.33333.. 向零截断后得到 3 。
示例 2:
输入: dividend 7, divisor -3
输出: -2
解释: 7/-3 -2.33333.. 向零截断后得到 -2 。提示
-231 dividend, divisor 231 - 1divisor ! 0 思路
这道题我是将除法转化为减法如 将被除数分为 n 个除数。
这样要求我们先对结果的正负进行判断然后对除数与被除数取绝对值进行减法。
为了加快速度令 d 除数 b 将 d 每次与被除数 a/2 比较后乘以2再进行比较用 c 代表此时的d c * b
代码
#include stdio.h
#include stdlib.h
#include math.hint divide(int dividend, int divisor);int main()
{int a 2147483647;int b 1;int c divide(a, b);printf(%d, c);
}int divide(int dividend, int divisor)
{int res 0;int sign 1;if ((dividend 0 divisor 0) || (dividend 0 divisor 0))sign -1;if (divisor INT_MIN){if (dividend INT_MIN)return 1;elsereturn 0;}if (dividend INT_MIN){if (divisor 1)return INT_MIN;else if (divisor -1)return INT_MAX;res;dividend dividend fabs(divisor);}int a fabs(dividend);int b fabs(divisor);while (a b){int c 1;int d b;while (a/2 d)// a/2 是为了防止 2*d INT_MAX 同时 a 2*d为后面做准备{d 2 * d;c 2 * c;}a a - d;//c 指 d 代表 c 个 bres res c;}if (sign -1)res -res;return res;
}
