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