题意解析
本题的意思就是让我们求在kx<=n的情况下,S值最大时x为多少?
样例1解析
输入:n=3
我们可以发现当x=2,k=1时,2x<n,S=2
当x=3时,k=1时,kx<=n,S=3
此时3>2,所以x最优解为3
思想
我想着枚举x和k,同时一遍用S对kx求和,当kx>n时,统计一下S是否是最大S,是的话x就是最大的s.然后结束内循环,枚举下一个x,重复上面工作.最后结束的时候我们就知道了最大的S对应的那个x是谁了,输出x即可
#include<bits/stdc++.h>
#define int long long
using namespace std;
int flag;
int S, maxsum=-0x3f3f3f3f;
int maxn = -0x3f3f3f3f;
signed main()
{
cin.tie(nullptr)->sync_with_stdio(false);
int n; cin >> n;
int x = 2;
for (; x <= n; x++)
{
S = 0;
for (int k = 2; k <n; k++)
{
S += (k * x);
if (k * x > n)
{
if (S > maxsum)
{
maxsum = S;
maxn = x;
}
break;
}
}
}
cout << maxn << endl;
return 0;
}