মান লেট a, b, c এবং d চারটি সংখ্যা। আমাদের (x, y) জোড়া কতটুকু পাওয়া যাবে সেটা বের করতে হবে যাতে সেটি এই সমীকরণটি মেনে চলে: x^2 + y^2 = (x*a) + (y*b) যেখানে x রেঞ্জ [1, c] এবং y রেঞ্জ [1, d]
তাহলে, যদি ইনপুট হয় a = 2 b = 3 c = 2 d = 4, তবে আউটপুট হবে 1 কারণ একটি জোড়া হল (1, 1)।
এটি সমাধান করতে, আমরা নিচের পদক্ষেপগুলো অনুসরণ করব −
- ans := 0
- x 1 থেকে c পর্যন্ত রেঞ্জে, করুন
- l := x*(x-a)
- det2 := b*b - 4*l
- যদি det2 ০-এর সমান হয় এবং b জোড় হয় এবং 1 <= floor of (b/2) <= d, তবে
- ans := ans + 1
- নেক্সট ইটারেশনে যান
- যদি det2 > 0, তবে
- det := integer part of the square root of det2
- যদি det^2 det2-এর সমান হয় এবং (b+det) জোড় হয়, তবে
- যদি 1 <= floor of (b+det)/2 <= d, তবে
- ans := ans + 1
- যদি 1 <= floor of (b-det)/2 <= d, তবে
- ans := ans + 1
- যদি 1 <= floor of (b+det)/2 <= d, তবে
- ans রিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন −
def solve(a, b, c, d): ans = 0 for x in range(1,c+1): l = x*(x-a) det2 = b*b - 4*l if det2 == 0 and b%2 == 0 and 1 <= b//2 <= d: ans += 1 continue if det2 > 0: det = int(round(det2**0.5)) if det*det == det2 and (b+det) % 2 == 0: if 1 <= (b+det)//2 <= d: ans += 1 if 1 <= (b-det)//2 <= d: ans += 1 return ans a = 2 b = 3 c = 2 d = 4 print(solve(a, b, c, d))
ইনপুট
2, 3, 2, 4
আউটপুট
1