解题思路:

注意事项:

参考代码:

#include<stdio.h>
int main()
{
	int N;
	scanf("%d",&N);
	int a[N];
	
	
	
	for(int i=0;i<N;i++){       //输入数组
	    
	    int b;
	    scanf("%d",&b);
	  if(b%2==0)
	  {
	      
	      if(b>=2&&b<=1000){
	        a[i]=b;
	    }
	}
}
    
    int w=0;
    while(1){
  //  printf("1");
      
        int ok=1;//另标志位为1,为0是表示不满足条件,需要分糖果
        for(int i=0;i<N-1;i++){
            if(a[i]!=a[i+1]){
                ok=0;//一旦有一位不相同就标志位置0并跳出这个循环
          //      printf("3");
                break;
            }
        }
     //  printf("2");

    //    printf("%d",ok);
       
     
      if(ok==0){
   //       printf("4\n");
            int f;
            f=a[0]/2;
            for(int j=0;j<N;j++){   //糖果分一半
                a[j]=a[j]/2;
            
                if(j>=1){
                
                a[j-1]=a[j]+a[j-1];
                }
            }
                a[N-1]=a[N-1]+f;
            
            
    
    /*
            for(int i=0;i<N;i++){       //输出数组
            printf("%d",a[i]);
    }
    */
         //   printf("\n");
            for(int i=0;i<N;i++){       //补糖果
            if(a[i]%2!=0){
            a[i]++;
            w++;
        }
    }
            
       /*     for(int i=0;i<N;i++){       //输出数组
            printf("%d",a[i]);
    }
             printf("\n");
    */
   }
   
     else{
           printf("%d",w);//满足条件的情况下j不会置0,进入这个输出后brake跳出while循环,至此整个函数运行完毕
            break;
        }
    

}

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论