题目描述
blablabla
样例
blablabla
#include<iostream>
using namespace std;
#define N 1010
int arr[N]; //糖果总数
int half[N]; //糖果的一半
int result; //补发的糖果数
int n;
//判断糖果是否相等
int cand()
{
int num = arr[0];
for (int i = 0; i < n; i++)
{
if (num != arr[i])
{
return 0;
}
}
return 1;
}
int main()
{
int cand();
scanf("%d", &n);
int flag = 1;
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
while (flag)
{
if (cand()) //糖果数量相等
{
flag = 0; //跳出循环
}
else
{
for (int i = 0; i < n; i++)
{
half[i] = arr[i] / 2; //拿出一半的糖果
arr[i] /= 2; //已有糖果为原有糖果的一半
}
for (int i = 0; i < n - 1; i++)
{
//糖果=当前已有糖果+下一位糖果的一半
arr[i] += half[i +1];
}
arr[n - 1] += half[0];
for (int i = 0; i < n; i++)
{
if (arr[i] % 2 != 0) //糖果数量不为偶数
{
arr[i]++; //补发糖果
result++;
}
}
}
}
printf("%d", result);
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla