Giả sử chúng ta có một chiều cao mảng. Có n tháp khác nhau với chiều cao khác nhau. Amal và Bimal đang chơi một trò chơi. Luật chơi như dưới đây
-
Amal luôn chơi trước
-
Trong mỗi lần di chuyển, người chơi hiện tại chọn một tháp có chiều cao X và giảm chiều cao xuống Y [1 <=Y
-
Ai không di chuyển sẽ thua trò chơi
Chúng tôi phải tìm ra tên của người chiến thắng.
Vì vậy, nếu đầu vào giống như height =[3,1,2], thì đầu ra sẽ là Bimal, vì độ cao ban đầu là {3,1,2}. Nếu Amal giảm chiều cao của tháp 2 xuống 1, Bimal có thể giảm 3 đi 1, nhưng Amal không có động thái nào nên Bimal thắng.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- Xác định một hàm dùng (). Điều này sẽ mất a, n
- ans:=0
- đối với tôi trong phạm vi từ 0 đến n - 1, thực hiện
- ans:=ans XOR a [i]
- trả lại ans
- Từ phương thức chính, hãy làm như sau
- n:=kích thước chiều cao
- b:=một mảng có kích thước n và điền bằng 0
- đối với tôi trong phạm vi từ 0 đến n - 1, thực hiện
- nếu chiều cao [i] bằng 1, thì
- b [i]:=0
- nếu không thì
- b [i]:=0
- j:=2
- root:=tầng của căn bậc hai của chiều cao [i]
- trong khi chiều cao [i] không giống 1 và j <=root, do
- nếu chiều cao [i] mod j bằng 0, thì
- trong khi chiều cao [i] mod j bằng 0, hãy thực hiện
- b [i]:=b [i] + 1
- height [i]:=tầng chiều cao [i] / j
- trong khi chiều cao [i] mod j bằng 0, hãy thực hiện
- j:=j + 1
- nếu chiều cao [i] mod j bằng 0, thì
- nếu chiều cao [i] không giống với 1, thì
- b [i]:=b [i] + 1
- nếu chiều cao [i] bằng 1, thì
- ans:=use (b, n)
- nếu ans không giống 0, thì
- trả lại "Amal"
- nếu không,
- trả về "Bimal"
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def util(a,n): ans = 0 for i in range(n): ans = ans^a[i] return ans def solve(height): n = len(height) b = [0 for i in range(n)] for i in range(n): if(height[i] == 1): b[i] = 0 else: b[i] = 0 j = 2 root = int(pow(height[i],0.5)) while(height[i] != 1 and j<=root): if(height[i]%j == 0): while(height[i]%j == 0): b[i] += 1 height[i] = height[i]//j j += 1 if(height[i] != 1): b[i] += 1 ans = util(b, n) if(ans != 0): return "Amal" else: return "Bimal" height = [3,1,2] print(solve(height))
Đầu vào
[3,1,2]
Đầu ra
Bimal