zoukankan      html  css  js  c++  java
  • Codeforces Round #626 (Div. 2, based on Moscow Open Olympiad in Informatics)/CF1323 A. Even Subset Sum Problem(水题)

    You are given an array aa consisting of nn positive integers. Find a non-empty subset of its elements such that their sum is even (i.e. divisible by 22 ) or determine that there is no such subset.

    Both the given array and required subset may contain equal values.

    Input

    The first line contains a single integer tt (1t1001≤t≤100 ), number of test cases to solve. Descriptions of tt test cases follow.

    A description of each test case consists of two lines. The first line contains a single integer nn (1n1001≤n≤100 ), length of array aa .

    The second line contains nn integers a1,a2,,ana1,a2,…,an (1ai1001≤ai≤100 ), elements of aa . The given array aa can contain equal values (duplicates).

    Output

    For each test case output 1−1 if there is no such subset of elements. Otherwise output positive integer kk , number of elements in the required subset. Then output kk distinct integers (1pin1≤pi≤n ), indexes of the chosen elements. If there are multiple solutions output any of them.

    Example
    Input
    Copy
    3
    3
    1 4 3
    1
    15
    2
    3 5
    
    Output
    Copy
    1
    2
    -1
    2
    1 2
    利用奇数偶数性质就可以。
    #include <bits/stdc++.h>
    using namespace std;
    int n,a[105];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n;
            int i,j;
            int ans=0,ans1=0,ans2=0,flag=0;
            for(i=1;i<=n;i++)
            {
                scanf("%d",&a[i]);
                if(a[i]%2==0)
                {
                    flag=1;
                    ans=i;
                }
                else
                {
                    if(!ans1)
                    {
                        ans1=i;
                    }
                    else if(!ans2)
                    {
                        ans2=i;
                    }
                }
            }
            if(flag)
            {
                cout<<1<<endl;
                cout<<ans<<endl;
                continue;
            }
            if(ans1&&ans2)
            {
                cout<<2<<endl;
                cout<<ans1<<' '<<ans2<<endl;
            }
            else
            {
                cout<<-1<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    Count and Say
    Valid Sudoku
    Find First and Last Position of Element in Sorted Array
    Search in Rotated Sorted Array
    Longest Valid Parentheses
    web前端中文教程库
    三代基因组拼接软件--Falcon篇
    使用ThreadPoolExecutor并行执行独立的单线程任务
    python中的计时器:timeit
    Python教程
  • 原文地址:https://www.cnblogs.com/lipoicyclic/p/12442561.html
Copyright © 2011-2022 走看看