首页 > 代码库 > 蓝桥--分糖果[模拟]

蓝桥--分糖果[模拟]

题目链接:http://lx.lanqiao.cn/problem.page?gpid=T124

题目大意:

  老师先给n个同学各分偶数个糖果,然后【同时】每个同学将他手中的一半分给左手边的同学。老师将手中为奇数个的同学加一个糖果使其为偶数个糖果。游戏继续进行,直到所有同学手中的糖果数相同。

解题思路:

  解题时傻*了,没有考虑到【同时】而是依次累积后再/2,耗时2个小时也是**。

  直接暴力模拟。

AC Code:

 1 #include<stdio.h>
 2 int arr[105],n;
 3 int check(const int n) {
 4     int i;
 5     for(i=1; i<n; i++)
 6         if(arr[0]!=arr[i])return 0;
 7     return 1;
 8 }
 9 int main() {
10     int need,j,tem;
11     while(scanf("%d",&n)!=EOF) {
12         need=0;
13         for(j=0; j<n; j++) {
14             scanf("%d",&arr[j]);
15         }
16 
17         while(!check(n)) {
18             tem=arr[0]/2;
19             for(j=0; j<n-1; j++) {
20                 arr[j]=arr[j]/2+arr[j+1]/2;
21                 if(arr[j]&1)need+=1,arr[j]+=1;
22             };
23             arr[n-1]=arr[n-1]/2+tem;
24             if(arr[n-1]&1)need+=1,arr[n-1]+=1;
25         }
26         printf("%d\n",need);
27     }
28     return 0;
29 }

 

蓝桥--分糖果[模拟]