এই টিউটোরিয়ালে, আমরা একটি প্রোগ্রাম লিখতে যাচ্ছি যা প্রদত্ত দুটি বিন্দুর মধ্যে অবিচ্ছেদ্য বিন্দুর সংখ্যা খুঁজে বের করে।
দুটি প্রদত্ত বিন্দুর মধ্যে বিন্দুর সংখ্যা হবে 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