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