【题解】SP23976 题解

SP23976 题解

思路分析

小学数学题。

根据平均值定义,得到未加 xx 之前的和是 (A+1)n(A+1)n,加完后即 (A+1)n+x(A+1)n+x。同时,加 xx 后平均值为 AA,和为 (n+1)A(n+1)A

于是可以列得等式 (A+1)n+x=(n+1)A(A+1)n + x = (n+1)A,解得 n=xAn = x-A

由原式定义得到加完 xx 的数列之和为 (n+1)A(n+1)A,不妨记为 SS。现在,问题转化为这样:已知一个数列的和与项数,求该数列的最大值。

首先,这个数列要不同,于是先分配 1,2,3,,n1, 2, 3, \ldots ,n 作为打底。打底之后必会产生差,令 S(1+2++n)S - (1+2+ \ldots + n)PP,考虑 PP 如何分配。显然,要想最大,PP 应该全部分配到 nn 处,也就是 n+Pn + P。据此计算便可得到结果。

关键代码

void solve(int x, int a)
{
    int n = x - a; //项数
    int s = (n + 1) * a; //数列和
    int sd = (n + 1) * n / 2; //打底和
    int p = sd - s; //打底差
    cout << n + p << endl;
}
posted @ 2022-12-26 22:21  邻补角-SSA  阅读(13)  评论(0)    收藏  举报  来源