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);
    	}
    }


  • 相关阅读:
    Linux 使用grep过滤多个条件及grep常用过滤命令
    看Linux0.11源码分析书籍,补充知识
    调用门描述符格式
    可能用到的一些寄存器
    002. Linux0.00 head.s注释
    linux0.00 的Makefile
    [转载] Bochs 常用的调试指令
    001. 注释过的boot.s
    PHP接口编程——调用第三方接口获取天气
    phpstudy中让ThinkPHP5访问去除/public/index.php
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6843917.html
Copyright © 2011-2022 走看看