zoukankan      html  css  js  c++  java
  • 蓝桥杯 历届试题 分糖果 (模拟)

      历届试题 分糖果  
    时间限制:1.0s   内存限制:256.0MB
        
    问题描写叙述
      有n个小朋友围坐成一圈。老师给每一个小朋友随机发偶数个糖果,然后进行以下的游戏:

      每一个小朋友都把自己的糖果分一半给左手边的孩子。



      一轮分糖后。拥有奇数颗糖的孩子由老师补给1个糖果。从而变成偶数。

      重复进行这个游戏,直到全部小朋友的糖果数都同样为止。



      你的任务是预測在已知的初始糖果情形下。老师一共须要补发多少个糖果。

    输入格式
      程序首先读入一个整数N(2<N<100),表示小朋友的人数。
      接着是一行用空格分开的N个偶数(每一个偶数不大于1000。不小于2)
    输出格式
      要求程序输出一个整数。表示老师须要补发的糖果数。

    例子输入
    3
    2 2 4
    例子输出

    4

    ac代码

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    int cmp(const void *a,const void *b)
    {
    	return *(int *)a-*(int *)b;
    }
    int a[110],b[110],c[110];
    int main()
    {
    	int n;
    	while(scanf("%d",&n)!=EOF)
    	{
    		int i;
    		for(i=0;i<n;i++)
    		{
    			scanf("%d",&a[i]);
    			b[i]=a[i];
    		}
    		qsort(b,n,sizeof(b[0]),cmp);
    		int ans=0;
    		while(b[0]!=b[n-1])
    		{
    			for(i=0;i<n-1;i++)
    			{
    				c[i]=a[i+1]/2;
    			}
    			c[n-1]=a[0]/2;
    			a[0]=a[0]+c[0]-c[n-1];
    			if(a[0]&1)
    			{
    				a[0]++;
    				ans++;
    			}
    			b[0]=a[0];
    			for(i=1;i<n;i++)
    			{
    				a[i]=a[i]+c[i]-c[i-1];
    				//b[i]=a[i];
    				if(a[i]&1)
    				{
    					ans++;
    					a[i]++;
    				}
    				b[i]=a[i];
    			}
    			qsort(b,n,sizeof(b[0]),cmp);
    		}
    		printf("%d
    ",ans);
    	}
    }


  • 相关阅读:
    Altium Designer如何从已有的PCB图中导出封装库
    获得内核函数地址的四种方法
    poj2976 Dropping tests
    poj3045 Cow Acrobats
    CF916C Jamie and Interesting Graph
    poj3104 Drying
    poj2455 Secret Milking Machine
    poj2289 Jamie's Contact Groups
    网络流最小路径覆盖
    CF897C Nephren gives a riddle
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6843917.html
Copyright © 2011-2022 走看看