Acgo挑战赛6 B题求最大S的x 题型:思维题 难度:中 半独立完成

58 阅读1分钟

题意解析

本题的意思就是让我们求在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

7ce4f995f19c161a2178189f9fd43420.jpg

思想

我想着枚举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;
}

image.png