Tìm tập con có tổng chẵn

Xem PDF



Tác giả:
Dạng bài
Điểm: 777 Thời gian: 1.0s Bộ nhớ: 512M Input: bàn phím Output: màn hình

Cho một mảng gồm \(n\) phần tử \(a_1,a_2,...,a_n\). Nhiệm vụ của bạn là hãy chọn ra một vài phần tử của mảng đã cho (mỗi phần tử chỉ được chọn một lần) sao cho tổng các phần tử của mảng con đã chọn chia hết cho \(2\) và in ra số lượng và chỉ số vị trí của các phần tử của mảng đã chọn.

Nếu có nhiều đáp án thì in ra một đáp án bất kì. Ngược lại in ra \(-1\)

Input

  • Dòng đầu tiên chứa số nguyên dương \(t(1\le t\le 100)\) - Thể hiện số testcase
  • \(t\) block tiếp theo, mỗi block có dạng như sau:
    ++ Dòng đầu tiên chứa số nguyên \(n(1\le n\le 100)\) - Thể hiện số lượng phần tử của mảng
    ++ Dòng thứ hai gồm \(n\) số nguyên \(a_1,a_2,...,a_n(1\le a_i\le 100)\)

Output

  • Ứng với mỗi testcase, hãy in kết quả ra màn hình.

Example

Test 1

Input
3
3
1 3 5
1
3
2
1 1
Output
2
1 2
-1
2 
1 2
Note

++ Ở ví dụ đầu tiên, thì ta chọn 2 phần tử đầu tiên là \(1,3\) thì chúng có tổng là \(4\) chia hết cho \(2\)


Bình luận


  • 0
    tk22NguyenHuyPhuc    10:23 p.m. 7 Tháng 8, 2024

    def solve(test_cases):
    results = []

    for case in test_cases:
        n, array = case
        even_indices = []
        odd_indices = []
    
        for i in range(n):
            if array[i] % 2 == 0:
                even_indices.append(i + 1)  
            else:
                odd_indices.append(i + 1)
    
        if even_indices:
            results.append(f"1\n{even_indices[0]}")
        elif len(odd_indices) >= 2:
            results.append(f"2\n{odd_indices[0]} {odd_indices[1]}")
        else:
            results.append("-1")
    
    return results
    

    t = int(input())
    test_cases = []
    for _ in range(t):
    n = int(input())
    array = list(map(int, input().split()))
    test_cases.append((n, array))

    results = solve(test_cases)
    for result in results:
    print(result)

    cot đó