একটি ফাংশন f(x) আছে যা এমন জোড়া (p, q) গণনা করে যেখানে:
1 < p <= q <= xpএবংqকো-প্রাইম (GCD = 1)p * q = x
১ থেকে n পর্যন্ত সব x এর জন্য f(x) এর যোগফল বের করতে হবে।
উদাহরণ
ইনপুট: 12
আউটপুট: 3
কারণ:
- x = 6: (2, 3) → f(6) = 1
- x = 10: (2, 5) → f(10) = 1
- x = 12: (3, 4) → f(12) = 1
সমাধান পদ্ধতি
count := 0sqr := int(sqrt(n)) + 1base = 2থেকেsqr - 1পর্যন্ত:i = 1থেকেmin(base, n // base - base + 1)পর্যন্ত:- যদি
gcd(base, i) != 1হয়, কন্টিনিউ করুন। count += (n - i * base) // (base * base)
- যদি
countরিটার্ন করুন।
পাইথন ইমপ্লিমেন্টেশন
from math import sqrt, gcd
def solve(n):
count = 0
sqr = int(sqrt(n)) + 1
for base in range(2, sqr):
for i in range(1, min(base, n // base - base + 1)):
if gcd(base, i) != 1:
continue
count += (n - i * base) // (base * base)
return count
# টেস্ট
n = 12
print(solve(n)) # আউটপুট: 3
ইনপুট
12
আউটপুট
3