zoukankan      html  css  js  c++  java
  • 蓝桥杯 1431 分糖果 (找规律)

    题目描述

    问题描述

    有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏:

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

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

    反复进行这个游戏,直到所有小朋友的糖果数都相同为止。

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

    输入

    程序首先读入一个整数N(2< N< 100),表示小朋友的人数。

    接着是一行用空格分开的N个偶数(每个偶数不大于1000,不小于2)

    输出

    要求程序输出一个整数,表示老师需要补发的糖果数。

    样例输入

    3

    2 2 4

    样例输出

    4

    分析:

    我们的任务就是要把当前数(必须为偶数)除半后加上他后面的那个数(必须为偶数)的一半,如果说最后一个数的话,加上的应该是第一个数,相当于一个循环的数组知道数组中的所有的数全部相等为止。

    但是我们要注意的是,第一个数是第一个变换的,当我们进行到最后一个数的时候第一个数的值已将改变了,而我们要加上的是没有变换之前的第一个数。所以最后一个数要单独处理。

    代码:

        #include <iostream>
        #include <stdio.h>
        #include <cstring>
        using namespace std;
        int main()
        {
            int n;
            int a[101];
            int i,sum=0,op;
        	scanf("%d",&n);
        	for( i=0;i<n;i++)
        	   scanf("%d",&a[i]);
        	while(1)
        	{
        	 //首先应该判断当前数组中的元素是否完全相等,完全相等就直接输出老师补发的糖果个数,否则的话就要接着进行 
        	 op=a[0];//都与第一位进行比较 
        	 for( i=1;i<n;i++)
        	 {
        	   if(a[i]!=op)
        	   {
        	   	break;
        	   }	
        	 }
        	 if(i==n)//中间没有break,相当于所有的数全部相等 
        	   {
        	   	printf("%d",sum);
        	   	break;
        	   }
        	  //如果当前的数组中有奇数,则加1变为偶数,老师步伐的糖果数加1 
        	  for(i=0;i<n;i++)
        	 	 {
        	 	 	if(a[i]%2!=0)
        	 	 	{
        			  a[i]=a[i]+1;
        	 	 	  sum++;
        	 	 	}	 	
        	 	 }
        	 	 op=a[0];//要先把没有变换前的a[0]的值取出来,否则后面就变了 
        	 	for( i=0;i<n-1;i++)
        	 	 {
        	 	 	a[i]=a[i]/2+a[i+1]/2;
        	 	 }
        	 	a[n-1]=a[n-1]/2+op/2;//最后一个人应该是第一个人给他	  
        	}
           
            return 0;
        }
    
  • 相关阅读:
    父级和 子集 controller 之间的通讯
    ui-router(三)controller与template
    ui-router详解(二)ngRoute工具区别
    关于MySql全文索引
    Yii提供的Htmler助手checkboxList可自定义Checkbox输出格式
    添加和删除索引以及如何给中间表添加两个主键
    设置数据库及表的默认字符集
    保存数据的时候报类型错误的原因和解决方案
    金融经济
    YII获取刚插入数据的id主键
  • 原文地址:https://www.cnblogs.com/cmmdc/p/6729623.html
Copyright © 2011-2022 走看看