An array bb is good if the sum of elements of bb is even.
You are given an array aa consisting of nn positive integers. In one operation, you can select an index ii and change ai:=⌊ai2⌋ai:=⌊ai2⌋. ††
Find the minimum number of operations (possibly 00) needed to make aa good. It can be proven that it is always possible to make aa good.
†† ⌊x⌋⌊x⌋ denotes the floor function — the largest integer less than or equal to xx. For example, ⌊2.7⌋=2⌊2.7⌋=2, ⌊π⌋=3⌊π⌋=3 and ⌊5⌋=5⌊5⌋=5.
Input
Each test contains multiple test cases. The first line contains a single integer tt (1≤t≤10001≤t≤1000) — the number of test cases. The description of the test cases follows.
The first line of each test case contains a single integer nn (1≤n≤501≤n≤50) — the length of the array aa.
The second line of each test case contains nn space-separated integers a1,a2,…,ana1,a2,…,an (1≤ai≤1061≤ai≤106) — representing the array aa.
Do note that the sum of nn over all test cases is not bounded.
Output
For each test case, output the minimum number of operations needed to make aa good.
如果一个数组b的元素之和是偶数,那么这个数组就是好的。
给你一个由n个正整数组成的数组a。在一次操作中,你可以选择一个索引i并改变ai:=⌊ai2⌋。†
找出需要的最小操作数(可能是0),使之成为一个好的。可以证明,总是有可能做出一个物品。
† ⌊x⌋表示底限函数--小于或等于x的最大整数。例如,⌊2.7⌋=2,⌊π⌋=3和⌊5⌋=5。
输入
每个测试包含多个测试案例。第一行包含一个整数t(1≤t≤1000)--测试案例的数量。测试用例的描述如下。
每个测试用例的第一行包含一个整数n(1≤n≤50)--数组a的长度。
每个测试用例的第二行包含n个空格分隔的整数a1,a2,...,an (1≤ai≤106) - 代表数组a。
请注意,所有测试用例的n之和是没有界限的。
输出
对于每个测试用例,输出使一个好的结果所需的最小操作数。
当偶数与偶数相加,或者奇数与奇数相加的时候和都是偶数,只有当奇偶相加的时候才会使奇数,在这样的特性上面,再去改变偶数,那么就可以调整和的奇偶性了
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<stack>
#include<string.h>
#include<algorithm>
#include<map>
#include<cstring>
#include<queue>
#include<set>
#include<stdlib.h>
using namespace std;
typedef long long ll;
//#define dbug cout<<"hear!"<<erndl;
const int N = 1e6 + 5, INF = 0x3f3f3f3f;
ll gcdd(ll a, ll b)
{
if (b) while ((a %= b) && (b %= a));
return a + b;
}
int n, m;
int arr[N];
int brr[N];
int main()
{
int t;
cin >> t;
while (t--)
{
int n, ans = 0, mx = 0x3f3f3f;
cin >> n;
for (int i = 0;i < n;i++) {
int a, b;
int cnt = 0;
cin >> a;
ans += a;
b = a;
while ((a % 2) == (b % 2))
{
b /= 2;
cnt++;
}
mx = min(mx, cnt);
}
if (ans % 2)
{
cout << mx;
}
else {
cout << 0;
}
cout << endl;
}
}