সমস্যা বিবরণ
একটি অ্যারে A দেওয়া আছে যেতে পজিটিভ ইন্টিজার আছে এবং সবই ইউনিক। দুই খেলোয়াড় P এবং Q খেলছে। প্রতিটি মুভে একজন খেলোয়াড় দুটি সংখ্যা a এবং b বেছে নেয়। যদি |a - b| অ্যারেতে না থাকে, তবে সেটি যোগ করবে। যে খেলোয়াড় মুভ করতে পারবে না সে হारे। P প্রথমে শুরু করলে কে জিতবে তা বের করতে হবে।
উদাহরণস্বরূপ, A=[8,9,10] হলে আউটপুট P।
সমাধানের ধাপসমূহ
n := len(arr)।g := arr[0],max_val := arr[0]।- প্রতিটি উপাদানের জন্য
g = gcd(g, arr[i])এবংmax_val = max(max_val, arr[i])আপডেট করুন। total = (max_val / g) - n।- যদি
totalবিজোড় হয়,'P'রিটার্ন করুন, অন্যথায়'Q'।
পাইথন কোড উদাহরণ
from math import gcd
def who_is_the_winner(arr):
n = len(arr)
g = arr[0]
max_val = arr[0]
for i in range(1, n):
g = gcd(g, arr[i])
max_val = max(max_val, arr[i])
total = (max_val / g) - n
if total % 2 == 1:
return 'P'
return 'Q'
arr = [8, 9, 10]
print(who_is_the_winner(arr)) # আউটপুট: P
ইনপুট
[8,9,10]
আউটপুট
P