উদ্দেশ্য হলো দুটি এন্ডপয়েন্ট (x1,y1) এবং (x2,y2) দেওয়া থাকলে একটি রেখা কতগুলো বর্গের মধ্য দিয়ে যাবে তা নির্ধারণ করা।
রেখা কতগুলো বর্গের মধ্য দিয়ে যাবে তা বের করতে আমাদের বের করতে হবে: x পয়েন্টের পার্থক্য (dx) = x2-x1, y পয়েন্টের পার্থক্য (dy) = y2-y1, dx এবং dy যোগ করে তাদের gcd বিয়োগ করা (result) = dx + dy – gcd(dx,dy)।
unitSquares(int x1, int y1, int x2, int y2) ফাংশন চারটি মান x1,y1 এবং x2,y2 নেয়। x2 এবং x1-এর tuyệt দ্রিশ্য পার্থক্য এবং y2 এবং y1-এর tuyệt দ্রিশ্য পার্থক্য ক্যালকুলেট করা হয়। dx এবং dy যোগ করে dx,dy-এর gcd বিয়োগ করা হয়। ফলাফল ans-এ স্ট্রোর করে মেইনে প্রিন্ট করার জন্য ফেরত দেওয়া হয়।
int unitSquares(int x1, int y1, int x2, int y2){
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int ans = dx + dy - __gcd(dx, dy);
return ans;
}
উদাহরণ
রেখা কতগুলো ইউনিট বর্গের মধ্য দিয়ে যাবে তা বের করার ইমপ্লিমেন্টেশন:
#include<iostream>
#include <algorithm>
using namespace std;
int unitSquares(int x1, int y1, int x2, int y2){
int dx = abs(x2 - x1);
int dy = abs(y2 - y1);
int ans = dx + dy - __gcd(dx, dy);
return ans;
}
int main(){
int x1 = 3, y1 = 3, x2 = 12, y2 = 6;
cout<<"The line passes through "<<unitSquares(x1, y1, x2, y2)<<" squares ";
return 0;
}
আউটপুট
The line passes through 9 squares