C# 将100的比重分配给n个人如果不能平均分配到每个人则最后一个人的比重就是前面的人比重乘以前面的人数最后一个人的比重就是100减去前面的比重之和怎么实现
可以使用一个循环来实现这个分配过程。首先确定每个人的比重的初始值为0。然后,使用一个循环从第一个人开始,依次将比重分配给每个人。
在每次循环中,可以计算出当前人应该分配多少比重。如果当前人是最后一个人,则比重为100减去前面所有人的比重之和;否则,比重为前面人的比重乘以前面的人数。
下面是一个用C#实现的例子:
int totalWeight = 100;
int numberOfPeople = n;
int[] weights = new int[numberOfPeople]; // 用于存储每个人的比重
int sumOfWeights = 0; // 前面人的比重之和
for (int i = 0; i < numberOfPeople; i++)
{
if (i == numberOfPeople - 1)
{
// 最后一个人的比重为100减去前面所有人的比重之和
weights[i] = totalWeight - sumOfWeights;
}
else
{
// 当前人的比重为前面人的比重乘以前面的人数
weights[i] = sumOfWeights * (i + 1) / totalWeight;
sumOfWeights += weights[i];
}
}
// 输出每个人的比重
for (int i = 0; i < numberOfPeople; i++)
{
Console.WriteLine("Person {0}: {1}", i + 1, weights[i]);
}
在上述代码中,numberOfPeople表示人数,totalWeight表示总比重。weights数组用于存储每个人的比重。sumOfWeights变量用于记录前面人的比重之和。在循环中,根据当前人的位置,计算出当前人应分配的比重,并更新前面人的比重之和。最后,输出每个人的比重。
请注意,上述代码中的比重计算使用了整数除法运算符/,结果会被自动截断为整数。如果要得到精确的比重结果,可以将变量类型改为double,并使用浮点数除法运算符/。
原文地址: https://www.cveoy.top/t/topic/jd27 著作权归作者所有。请勿转载和采集!