原题链接:蓝桥杯2014年第五届真题-分糖果
解题思路:
不就是向左传递一半糖块,算一下需要多少糖块进行填充么
注意事项:思考我为什么在while循环中两次进行向左传递糖果函数
参考代码:
#include<cstdio> using namespace std; int an[105],n,nu=-1,num=0; void xh()//向左传递糖果的函数 { int b=an[1]; for(int i=1;i<n;i++) { an[i]=(an[i]+an[i+1])/2; } an[n]=(an[n]+b)/2; } void numn()//计算需要填充的糖果数目,并填充糖果数目为偶数的函数 { for(int i=1;i<=n;i++) if(an[i]%2!=0) { an[i]++; num++; } } int main () { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&an[i]); while(nu!=num) //当填充糖果数不变时就为糖果数目相同时(技巧处) { xh(); numn(); nu=num; xh(); numn(); } printf("%d",num); return 0; }
0.0分
3 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复