解题思路:输入人数和糖果后,通过两个数组互相赋值进行分糖果和比较,最终符合要求跳出循环
注意事项:
参考代码:
#include<stdio.h>
int main()
{
long long n = 0;
int N = 0;
int ans = 0;
long long b[100] = { 0 };
long long a[100] = { 0 };
//人数
scanf("%d", &N);
//糖果数目
for (int i = 0; i < N; i++)
{
scanf("%lld", &a[i]);
}
//平均分+补糖,内含比较,OK则跳出,不行再循环
do
{
ans = 0;
b[0] = a[0] / 2 + a[N - 1] / 2;
for (int j = 0; j < N; j++)
{
if (j)
{
b[j] = a[j] / 2 + a[j - 1] / 2;
}
long long M = b[j] % 2;
if (M != 0)
{
b[j] += 1;
n++;//补给的糖数
}
//判断相邻两个人的糖数是否相同
if (b[0] == b[N - 1])
{
ans++;
}
if (b[j] == b[j - 1])
{
ans++;
}
}
for (int z = 0; z < N; z++)
{
a[z] = b[z];
}
}
while (ans < 2*N-1);
printf("%d", n);
return 0;
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复