কম্পিউটার

C++ এ দুটি বিন্দুর মধ্যে অখণ্ড বিন্দুর সংখ্যা


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

দুটি প্রদত্ত বিন্দুর মধ্যে বিন্দুর সংখ্যা হবে gcd(abs(x2), abs(y1-y2)) - 1।

যদি লাইন যোগ করা x-অক্ষের সমান্তরাল হয়, তাহলে অবিচ্ছেদ্য বিন্দুর সংখ্যা হবে abs(y1 - y2) - 1।

যদি লাইন যোগদানটি y-অক্ষের সমান্তরাল হয়, তাহলে অবিচ্ছেদ্য বিন্দুর সংখ্যা হবে abs(x1 - x2) - 1

যদি উভয় বিন্দুর x বিন্দু সমান হয়, তাহলে তারা x-অক্ষের সমান্তরাল। যদি উভয় বিন্দুর y বিন্দু সমান হয়, তাহলে তারা y-অক্ষের সমান্তরাল।

আসুন একটি উদাহরণ দেখি।

ইনপুট

pointOne = [1, 5]
pointTwo = [1, 3]

আউটপুট

1

অ্যালগরিদম

  • দুটি পয়েন্ট শুরু করুন।
  • এগুলি x-অক্ষের সমান্তরাল কিনা তা পরীক্ষা করুন৷
  • যদি তারা x-অক্ষের সমান্তরাল হয়, তাহলে abs(y1 - y2) - 1 সূত্রটি ব্যবহার করুন।
  • তারা y-অক্ষের সমান্তরাল কিনা তা পরীক্ষা করুন।
  • যদি তারা y-অক্ষের সমান্তরাল হয়, তাহলে abs(x1 - x2) - 1 সূত্রটি ব্যবহার করুন।
  • যদি তারা কোনো অক্ষের সমান্তরাল না হয়, তাহলে gcd(abs(x1-x2), abs(y1- y2))- 1 সূত্রটি ব্যবহার করুন।
  • ফলাফল গণনা করুন এবং মুদ্রণ করুন।

বাস্তবায়ন

C++

-এ উপরের অ্যালগরিদমের বাস্তবায়ন নিচে দেওয়া হল
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
   if (b == 0) {
      return a;
   }
   return gcd(b, a % b);
}
int getCount(int pointOne[], int pointTwo[]) {
   if (pointOne[0] == pointTwo[0]) {
      return abs(pointOne[1] - pointTwo[1]) - 1;
   }
   if (pointOne[1] == pointTwo[1]) {
      return abs(pointOne[0] - pointTwo[0]) - 1;
   }
   return gcd(abs(pointOne[0] - pointTwo[0]), abs(pointOne[1] - pointTwo[1])) - 1;
}
int main() {
   int pointOne[] = {1, 3}, pointTwo[] = {10, 12};
   cout << getCount(pointOne, pointTwo) << endl;
   return 0;
}

আউটপুট

আপনি যদি উপরের কোডটি চালান, তাহলে আপনি নিম্নলিখিত ফলাফল পাবেন।

8

  1. C++ এ মিতব্যয়ী নম্বর

  2. C++ পেন্টাটোপ নম্বর

  3. C++-এ BST-এর দুটি নোডের মধ্যে সর্বাধিক উপাদান

  4. পাইথনের দুটি বিন্দুর মধ্যে একটি সরল রেখায় অবিচ্ছেদ্য স্থানাঙ্কের সংখ্যা খুঁজে বের করার প্রোগ্রাম