一个总数有条件的分摊

数字8,分摊到12个月,前8个月递增,后4个月递减,加起来还是8,怎么实现

需要等差吗?

除一下,得到每个月的平均值
然后1月减掉的数加给8月
12月减掉的数加给9月
以此类推
想等差就等差,想随机就随机

有用望采纳.
你可以使用以下公式计算每个月的数值:

前8个月:

value = (8 / 8) * (1 + 8) / 2 * 8 / 8 = 1 * (1 + 8) / 2 = 4.5

后4个月:

value = (8 / 8) * (1 + 4) / 2 * -1 * 4 / 8 = -1 * (1 + 4) / 2 = -2.5

代码示例

#include <stdio.h>

int main()
{
    int n = 8;
    int total_months = 12;
    int increasing_months = 8;
    int decreasing_months = total_months - increasing_months;
    double value = 0;

    for (int i = 0; i < increasing_months; i++) {
        value = (n / increasing_months) * (1 + increasing_months) / 2 * i / increasing_months;
        printf("Month %d: %.1f\n", i + 1, value);
    }
    for (int i = 0; i < decreasing_months; i++) {
        value = (n / increasing_months) * (1 + decreasing_months) / 2 * -1 * i / decreasing_months;
        printf("Month %d: %.1f\n", increasing_months + i + 1, value);
    }

    return 0;
}


说明:

前8个月的数字递增,所以我们使用公式(n / increasing_months) * (1 + increasing_months) / 2 * i / increasing_months计算每个月的值。
后4个月的数字递减,所以我们使用公式(n / increasing_months) * (1 + decreasing_months) / 2 * -1 * i / decreasing_months计算每个月的值。
我们将每个月的值输出,以确保计算是正确的。