কম্পিউটার

C++ এ দুটি পূর্ণসংখ্যা ভাগ করুন


ধরুন আমাদের দুটি পূর্ণসংখ্যা লভ্যাংশ এবং ভাজক আছে। গুণ, ভাগ এবং মোড অপারেটর ব্যবহার না করে আমাদের দুটি পূর্ণসংখ্যাকে ভাগ করতে হবে। ভাজক দ্বারা লভ্যাংশ ভাগ করার পর ভাগফল ফেরত দিন। পূর্ণসংখ্যা বিভাজনটি শূন্যের দিকে কাটা উচিত। উভয় ইনপুটই পূর্ণসংখ্যা

সুতরাং প্রদত্ত ইনপুটগুলি যদি লভ্যাংশ =7, ভাজক =-3 হয়, তাহলে আউটপুট হবে -2৷

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • এক্স এবং y দুটি আর্গুমেন্ট নিলে এটি x বিভাজন y নির্দেশ করে
  • যদি x <-ইনফিনিটি এবং y =1 হয়, তাহলে ইনফিনিটি ফেরত দিন
  • a :=|x|, b :=|y| এবং উত্তর :=0
  • যখন a – b>=0
    • p :=0
    • যখন a – (বাম স্থানান্তরিত b (বাম স্থানান্তরিত 1 p বার))>=0
      • p :=p + 1
    • a :=a – (বাম শিফট b, p বার)
    • উত্তর :=ans + বাম শিফট 1 p বার
  • যদি x> 0 সত্য হয় এবং y> 0ও সত্য হয়, তাহলে উত্তর দিন, অন্যথায় (– ans) ফেরত দিন

উদাহরণ(C++)

আসুন আরও ভালোভাবে বোঝার জন্য নিচের বাস্তবায়ন দেখি −

#include <bits/stdc++.h>
using namespace std;
typedef long long int lli;
class Solution {
public:
   int divide(int l, int y) {
      if(l <= INT_MIN && y == -1)return INT_MAX;
      lli a = labs(l);
      lli b = labs(y);
      lli ans = 0;
      while(a-b >= 0){
         int x = 0;
         while(a-(b << 1 << x) >= 0){
            x++;
         }
         a -= b<<x;
         ans += 1<<x;
      }
      return (l>0)== (y>0)?ans:-ans;
   }
};
main(){
   Solution ob;
   cout << ob.divide(40, 3);
}

ইনপুট

40
3

আউটপুট

13

  1. C++ এ দুটি লিঙ্ক করা তালিকার ছেদ

  2. দুই যোগফল IV - ইনপুট হল C++ এ একটি BST

  3. C++ এ দুটি বাইনারি ট্রি মার্জ করুন

  4. পাইথনে দুটি পূর্ণসংখ্যার যোগফল