def find_kth(nums1, nums2, k):
    """find kth number of two sorted arrays

    >>> find_kth([1, 3], [2], 2)
    2
    >>> find_kth([2], [1, 3], 1)
    1
    >>> find_kth([1, 3], [2], 3)
    3
    >>> find_kth([1], [2], 1)
    1
    >>> find_kth([1], [2], 2)
    2
    """
    # assume len(nums1) <= len(nums2)
    if len(nums2) < len(nums1):
        nums1, nums2 = nums2, nums1

    # if nums1 is empty
    if not nums1:
        return nums2[k - 1]

    if k == 1:
        return min(nums1[0], nums2[0])

    # divide and conquer
    if len(nums1) < k // 2:
        return find_kth(nums1, nums2[k - k // 2:], k // 2)
    elif nums1[k // 2 - 1] == nums2[k - k // 2 - 1]:
        return nums1[k // 2 - 1]
    elif nums1[k // 2 - 1] < nums2[k - k // 2 - 1]:
        return find_kth(nums1[k // 2:], nums2[:k - k // 2], k - k // 2)
    else:
        return find_kth(nums1[:k // 2], nums2[k - k // 2:], k // 2)