解题思路:输入人数和糖果后,通过两个数组互相赋值进行分糖果和比较,最终符合要求跳出循环

注意事项:

参考代码:

#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分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论