দুটি পয়েন্ট (p1, q1) এবং (p2, q2) দেওয়া আছে। এই দুটি পয়েন্টকে যোগ করে সরাসরি রেখা আঁকলে সেটিতে কতটি ইন্টিজার কোঅর্ডিনেট (x, y দুটোই ইন্টিজার) পড়ে তা বের করতে হবে।
উদাহরণ
ইনপুট: p1 = 3, q1 = 3, p2 = 6, q2 = 6
আউটপুট: 2
রেখায় (5,5) এবং (6,6) ইন্টিজার পয়েন্ট আছে।
সমাধান পদ্ধতি
gcd_find(x, y)ফাংশন ডিফাইন করুন (ইউক্লিডিয়ান অ্যালগরিদম)।- মূল ফাংশন থেকে রিটার্ন
gcd_find(|p2-p1|, |q2-q1|) - 1
তত্ত্ব: দুটি ল্যাটিস পয়েন্টের মাঝপথে ইন্টিজার পয়েন্টের সংখ্যা = GCD(|Δx|, |Δy|) - 1।
পাইথন ইমপ্লিমেন্টেশন
def gcd_find(x, y):
if y == 0:
return x
return gcd_find(y, x % y)
def solve(p1, q1, p2, q2):
return gcd_find(abs(p2 - p1), abs(q2 - q1)) - 1
# টেস্ট
print(solve(3, 3, 6, 6)) # আউটপুট: 2
ইনপুট
3,3,6,6
আউটপুট
2