{"id":995,"date":"2023-12-04T14:47:59","date_gmt":"2023-12-04T06:47:59","guid":{"rendered":"https:\/\/swordofmorning.com\/?p=995"},"modified":"2025-10-09T13:55:18","modified_gmt":"2025-10-09T05:55:18","slug":"displacement-multiplication-n-division","status":"publish","type":"post","link":"https:\/\/swordofmorning.com\/index.php\/2023\/12\/04\/displacement-multiplication-n-division\/","title":{"rendered":"\u4e8c\u8fdb\u5236\u4f4d\u79fb\u4e58\u9664\u6cd5"},"content":{"rendered":"<p>\u4e58\u6cd5\uff1a<\/p>\n<pre><code class=\"language-cpp\">class Solution {\npublic:\n    int multiply(int A, int B) {\n        if (B == 0) return 0;\n        if (B &amp; 1)\n            return A + multiply(A, B &gt;&gt; 1) + multiply(A, B &gt;&gt; 1);\n        else\n            return multiply(A, B &gt;&gt; 1) + multiply(A, B &gt;&gt; 1);\n    }\n};<\/code><\/pre>\n<p>\u9664\u6cd5\uff1a<\/p>\n<pre><code class=\"language-cpp\">class Solution {\n    long long divideHelper(long long dividend, long long divisor) \n    {\n        if (dividend &lt; divisor) return 0;\n\n        long long sum = divisor;\n        long long multiple = 1;\n\n        while ((sum + sum) &lt;= dividend) \n        {\n            sum += sum;\n            multiple += multiple;\n        }\n        return multiple + divideHelper(dividend - sum, divisor);\n    }\n\npublic:\n    int divide(int dividend, int divisor) \n    {\n        \/\/ \u5904\u7406\u7279\u6b8a\u60c5\u51b5\n        if (divisor == 0) return INT_MAX;\n        if (dividend == INT_MIN &amp;&amp; divisor == -1) return INT_MAX;\n\n        \/\/ \u5224\u65ad\u7b26\u53f7\u4f4d\n        int sign = (dividend &lt; 0) ^ (divisor &lt; 0) ? -1 : 1;\n\n        \/\/ \u53d6\u7edd\u5bf9\u503c\u8fdb\u884c\u8ba1\u7b97\n        long long absDividend = llabs(dividend);\n        long long absDivisor = llabs(divisor);\n\n        \/\/ \u9012\u5f52\u8ba1\u7b97\n        long long result = divideHelper(absDividend, absDivisor);\n\n        \/\/ \u8003\u8651\u7b26\u53f7\u4f4d\n        result = sign * result;\n\n        \/\/ \u68c0\u67e5\u662f\u5426\u6ea2\u51fa\n        if (result &gt; INT_MAX || result &lt; INT_MIN) return INT_MAX;\n\n        return static_cast&lt;int&gt;(result);\n    }\n};<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u4e58\u6cd5\uff1a class Solution { public: int multiply(int A, int B) { if (B = &#8230;<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[14],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/995"}],"collection":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/comments?post=995"}],"version-history":[{"count":1,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/995\/revisions"}],"predecessor-version":[{"id":996,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/posts\/995\/revisions\/996"}],"wp:attachment":[{"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/media?parent=995"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/categories?post=995"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/swordofmorning.com\/index.php\/wp-json\/wp\/v2\/tags?post=995"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}