ধরুন আমাদের কাছে ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে রয়েছে, উপাদানগুলি অনন্য, এখন, দুটি খেলোয়াড় P এবং Q একটি গেম খেলছে। প্রতিটি পদক্ষেপে, যেকোনো একজন খেলোয়াড় অ্যারে থেকে দুটি সংখ্যা a এবং b বেছে নেয় এবং যদি |a – b| প্লেয়ার অ্যারেতে এই সংখ্যাটি যোগ করার পরে অ্যারেতে নেই। যখন একজন খেলোয়াড় মুভ করতে পারে না তখন খেলা হারায়। আমাদের গেমের বিজয়ী খুঁজে বের করতে হবে যদি প্লেয়ার P সবসময় খেলা শুরু করে।
সুতরাং, যদি ইনপুট A =[8,9,10] এর মত হয়, তাহলে আউটপুট হবে P।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
n :=arr এর আকার
-
g :=arr[0], max_val :=arr[0>
-
1 থেকে n রেঞ্জের জন্য, করুন
-
g :=gcd(g, arr[i])
-
max_val :=max_val এর সর্বোচ্চ, arr[i]
-
-
মোট :=(max_val / g) - n
-
যদি মোট বিজোড় হয়, তাহলে
-
'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))
ইনপুট
[8,9,10]
আউটপুট
P