AcWing 3426. 糖果分享游戏
原题链接
简单
作者:
上下四方
,
2025-01-13 12:24:24
,
所有人可见
,
阅读 1
#include <iostream>
#include <vector>
using namespace std;
bool check(vector<int>& a) { //检查糖果是否相等
int size = a.size();
int x = a[0];
for (int i = 1; i < size; i++) {
if (a[i] != x) {
return false;
}
}
return true;
}
void exchange(vector<int>& a) {
int size = a.size();
vector<int> b(size); //开一个新数组存储当前糖果的一半
for (int i = 0; i < size; i++) {
b[i] = a[i] / 2;
a[i] /= 2;
}
for (int j = 0; j < size; j++) {
a[(j + 1) % size] += b[j];
}
for(int i=0;i<size;i++){
if(a[i]%2!=0){
a[i]++;
}
}
}
int main() {
int n;
while (scanf("%d",&n) != EOF)
{
if (n == 0)
{
break;
}
vector<int> a(n);
for (int i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
int cnt=0;
while (check(a) == false) {
exchange(a);
cnt++;
}
printf("%d %d\n", cnt, a[0]);
}
return 0;
}