Program to find value of find(x, y) is even or odd in Python

Given an array nums and a pair (x, y), we need to determine whether the value of find(x, y) is odd or even. The find() function is defined recursively:

  • find(x, y) = 1 if x > y
  • find(x, y) = nums[x] ^ find(x+1, y) otherwise

Where ^ represents the XOR (exclusive OR) operation.

Understanding the Problem

Let's trace through an example with nums = [3, 2, 7] and (x, y) = (1, 2):

  • find(1, 2) = nums[1] ^ find(2, 2)
  • find(2, 2) = nums[2] ^ find(3, 2)
  • find(3, 2) = 1 (since 3 > 2)
  • So find(2, 2) = 7 ^ 1 = 6
  • Therefore find(1, 2) = 2 ^ 6 = 4, which is even

Solution Approach

To determine if the result is even or odd without computing the actual value, we can use these observations:

  • If x > y, the result is 1 (odd)
  • If nums[x] is odd, it affects the parity of the final result
  • XOR operations follow specific parity rules

Implementation

def solve(nums, x, y):
    even = True
    
    # If x > y, find(x, y) = 1, which is odd
    if x > y or (nums[x] % 2 == 1):
        even = False
    
    # Special case handling for XOR operations
    if x < len(nums) - 1 and x < y and nums[x+1] == 0:
        even = False
    
    if even:
        return 'Even'
    else:
        return 'Odd'

# Test with the given example
nums = [3, 2, 7]
x, y = 1, 2
result = solve(nums, x, y)
print(f"find({x}, {y}) is {result}")
find(1, 2) is Even

Complete Example with Multiple Test Cases

def solve(nums, x, y):
    even = True
    
    if x > y or (nums[x] % 2 == 1):
        even = False
    
    if x < len(nums) - 1 and x < y and nums[x+1] == 0:
        even = False
    
    return 'Even' if even else 'Odd'

# Test cases
test_cases = [
    ([3, 2, 7], 1, 2),
    ([1, 4, 6], 0, 2),
    ([2, 0, 3], 1, 2)
]

for i, (nums, x, y) in enumerate(test_cases, 1):
    result = solve(nums, x, y)
    print(f"Test {i}: nums={nums}, (x,y)=({x},{y}) ? {result}")
Test 1: nums=[3, 2, 7], (x,y)=(1,2) ? Even
Test 2: nums=[1, 4, 6], (x,y)=(0,2) ? Odd
Test 3: nums=[2, 0, 3], (x,y)=(1,2) ? Even

How It Works

The algorithm uses parity rules to determine the result without computing the actual recursive value:

  • Base case: When x > y, find(x, y) = 1 (odd)
  • Odd numbers: If nums[x] is odd, it affects the final parity
  • Zero handling: Special case when the next element is 0, which affects XOR results

Conclusion

This solution efficiently determines if find(x, y) is even or odd without computing the actual recursive value. It uses mathematical properties of XOR operations and parity rules to achieve O(1) time complexity.

Updated on: 2026-03-26T18:26:49+05:30

340 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements