using System;
using System.Collections.Generic;
using System.Text;

namespace Logic_zhongJi
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * 测试 1415.幼儿园里有多少小朋友
             */
           TheNumberOfChildren();

           /* 输出结果:
                一共有136个小朋友!
                一共有139个小朋友!
                一共有141个小朋友!
                一共有142个小朋友!
                一共有144个小朋友!
                一共有145个小朋友!
                一共有146个小朋友!
                一共有147个小朋友!
                一共有148个小朋友!
                一共有149个小朋友!
                一共有150个小朋友!

           */


         
}

        #region 1415.幼儿园里有多少小朋友

        /*
         *  1.幼儿园里有多少小朋友?
            老师让幼儿园的小朋友排成一行,然后开始发水果。老师分发水果的方法是这样的:
         * 从左面第一个人开始,每隔2人发一个梨;从右边第一个人开始,每隔4人发一个苹果。
         * 如果分发后的结果有10个小朋友既得到了梨,又得到了苹果,那么这个幼儿园有多少个小朋友?
         */
     
        static void TheNumberOfChildren()
        {
         /*
          * 从右边第一个小朋友起,每隔4人发一个苹果,最后至少有10个人得到了苹果,
          * 那么由此可得,幼儿园至少要有46个小朋友!所以声明a的初始容量为46,也就是
          * int k=46;
          */
            int k = 46;
            int temp=0;
            //循环条件为true,但它不会无限循环下去,因为后面的if语句会强制终止循环!
            while (true)
            {
                /*
                 *
                 * 声明数组a,对应每一个小朋友,a[0]代表从左边数第1个小朋友,
                 * a[1]代表从左边数第2个小朋友,以此类推!
                 * 数组a每个元素值都有其默认初始值0,表示还没有开始分发苹果和梨!
                 *
                 */
                int[] a = new int[k];

                /*
                 * 开始分发梨,从左面第一个人开始,每隔2人发一个梨,
                 * 当发一个梨给一个小朋友时,该小朋友对应的数组元素值加1
                 */
                for (int i = 0; i < a.Length; i++)
                {
                    if (i%3==0)
                    {
                        a[i] += 1;
                    }
                }

                /*
                  * 开始分发梨,从右边第一个人开始,每隔4人发一个苹果,
                  * 当发一个苹果给一个小朋友时,该小朋友对应的数组元素值加1
                  */
                for (int i = a.Length-1; i >=0; i--)
                {
                    if ((a.Length-1-i)%5==0)
                    {
                        a[i] += 1;
                    }

                }

                /*
                 *
                 * 当有10个人既有苹果,又有梨时,输出k值,也就是小朋友的数量!
                 * 此时循环不会退出,而是继续,因为满足条件的 小朋友数量不唯一。
                 */

                temp = ScoreArray(a);
                if (temp == 10)
                {
                    Console.WriteLine("一共有"+k+"个小朋友!");
                }
                 //当有超过10个人既有苹果,又有梨时,程序结束!
                else if (temp > 10)
                {
                    break;
                }

                //在循环退出前,每次新加一个小朋友,继续!
                k++;
            }

        }

        //满足条件,既有苹果,又有梨的小朋友,其对应的数组元素值为2,下面的方法求/其总数!
        static int ScoreArray(int[] a)
        {
            int i = 0;
            for (int j = 0; j < a.Length; j++)
            {
                if (a[j]==2)
                {
                    i++;
                }
            }
            return i;
        }
        #endregion

  }
}