解题思路:关于糖果分配问题我将其分解为三个问题 1:检查每个人的糖果是否相等;2:将每个人的糖果补成偶数;3:分糖果;
注意事项:因为最开始分配的糖果是偶数所以关于三个问题的顺序应该是先检查,后小朋友之间分糖果,最后老师进行补糖果
参考代码:#include<iostream>
using namespace std;
int N;
int num[101];
int CountS=0;//补糖果计数器
void check();
void putc();
void gaintc()//老师将糖果补成偶数
{
for(int i=1;i<=N;i++)
if(num[i]%2==1)
{
num[i]++;
CountS++;
}
check();
}
void putc()//小朋友之间的糖果分配
{
int sum=num[N]/2;
for(int i=1;i<=N;i++)
{
int t=num[i]/2;
num[i]=t+sum;
sum=t;
}
gaintc();
}
void check()//检查每个人的糖果是否一样
{
int M=0;
for(int i=2;i<=N;i++)
if(num[1]==num[i])
M++;
if(M==N-1)
cout<<CountS<<endl;
else
putc();
}
int main()
{
cin>>N;
for(int i=1;i<=N;i++)
cin>>num[i];//最开始老师分配的糖果
check();
}
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复