甲、乙、丙三个小朋友。甲有 50 粒糖果,乙有 43粒糖果,丙有 13粒糖果。现在他们做一个游戏。从甲开始,将自己的糖平均分三份,自己留一份,其余两份分别给乙与丙,多余的糖果自己吃掉,然后乙与丙也依次这样做。问最后甲、乙、丙三人各有多少粒糖果?c#
时间: 2024-09-09 09:06:32 浏览: 114
在C#中,我们可以使用循环来模拟这个过程,直到每个孩子的糖果都无法再平分为止。以下是实现这个游戏的一个简单方法:
```csharp
using System;
class Program
{
static void Main(string[] args)
{
int[] initialStocks = { 50, 43, 13 };
while (true)
{
int[] nextStocks = new int[3];
bool allSharesCompleted = true;
// 分配糖果
foreach (int i in range(0, 3))
{
int remainingCandies = initialStocks[i] % 3;
if (remainingCandies != 0)
{
allSharesCompleted = false;
nextStocks[i] += initialStocks[i] / 3;
nextStocks[(i + 1) % 3] += remainingCandies;
initialStocks[i] = 0;
}
else
{
nextStocks[i] += initialStocks[i] / 3;
initialStocks[i] %= 3;
}
}
// 检查是否所有糖果都被分享完
if (allSharesCompleted)
{
break;
}
initialStocks = nextStocks;
}
Console.WriteLine("最终结果:");
Console.WriteLine($"甲:{initialStocks[0]} 颗糖果");
Console.WriteLine($"乙:{initialStocks[1]} 颗糖果");
Console.WriteLine($"丙:{initialStocks[2]} 颗糖果");
}
// 循环生成范围
static IEnumerable<int> range(int start, int end)
{
for (int i = start; i <= end; i++)
{
yield return i;
}
}
}
```
运行此程序后,我们会得到最后每人的糖果数量。注意,由于是循环迭代,所以当所有糖果都能平均分配并且没有剩余时,就会跳出循环,给出每个人的具体糖果数目。
阅读全文