#include<stdio.h>
#include<vector>
int main() {
int t = 0;
scanf("%d", &t);
std::vector<int> v;
int size = 0, input, cycle;
std::vector<int> temp;
bool equal = true;
for (int i = 0; i < t; i++)
{
v.clear();
temp.clear();
scanf("%d", &size);
for (int ii = 0; ii < size; ii++)
{
scanf("%d", &input);
if ((input & 1) == 1) input++;
v.push_back(input);
}
temp.assign(v.size(), 0);
cycle = 0;
while (true)
{
equal = true;
for (int i = 0; i < v.size(); i++)
{
temp[i] = v[i] /= 2;
if (i == 0 || !equal) continue;
if (v[i] != v[i - 1])
equal = false;
}
if (equal) break;
for (int i = 1; i < v.size(); i++)
{
v[i] += temp[i - 1];
if ((v[i] & 1) == 1) v[i]++;
}
v[0] += temp[temp.size() - 1];
if ((v[0] & 1) == 1) v[0]++;
cycle++;
}
printf("%d\n", cycle);
}
return 0;
}
수고하셨어요
아.. 백준 아시는구나....