AcWing 3151. 分糖果(模拟)
原题链接
简单
作者:
RanPg
,
2023-03-28 13:53:48
,
所有人可见
,
阅读 183
C++ 代码
#include<bits/stdc++.h>
using namespace std;
const int N = 110, M = N * 1e3;
int c[N], cnt[M];
vector<int> p;
int n;
int main()
{
cin >> n;
for(int i = 0; i < n; i ++)
{
scanf("%d", &c[i]);
p.push_back(c[i] / 2);
}
int ans = 0, res;
while(res != n)
{
memset(cnt, 0, sizeof cnt);
for(int i = 0; i < n; i ++) c[i] -= p[i];
for(int i = n - 1; i >= 0; i --)
{
if(i != 0) c[i - 1] += p[i];
else c[n - 1] += p[i];
}
for(int i = 0; i < n; i ++)
{
if(c[i] % 2 != 0)
{
c[i] += 1;
ans ++;
}
cnt[c[i]] ++;
if(i == n - 1) res = cnt[c[i]];
}
p.clear();
for(int i = 0; i < n; i ++) p.push_back(c[i] / 2);
}
cout << ans;
return 0;
}