牛客春招刷题训练营 - 2025.4.1 题解

活动地址:牛客春招刷题训练营 - 编程打卡活动

Easy 完全数计算

简要题意

以内完美数个数。

Solution

可以直接预处理每个数的因子,然后暴力判断每个数是否为完美数。

因为 以内的数因子总数和相当于 的,所以理论复杂度没问题。

事实上这题的空间限制比较严格,直接做上面的做法可能不能通过。

但是跑一下会发现完美数很少,在 之内只有四个,所以直接判断 是否大于等于这四个数就好。

Code

void R()
{
	/*
	constexpr int MAXN=5e5+7;
	vector<vector<int>> adj(MAXN);
	for (int i=1;i<MAXN;i++)
		for (int j=2;i*j<MAXN;j++)
			adj[i*j].push_back(i);

	int n;
	cin>>n;
	for (int i=1;i<=n;i++)
	{
		int x=i;
		for (int t:adj[i])
			x-=t;
		if (x==0) cout<<i<<'\n';
	}
	*/

	int ans=0,n;
	cin>>n;
	vector<int> a={6,28,496,8128};
	for (int x:a)
		if (x<=n)
			ans++;
	cout<<ans;
	return;
}

Medium 密码强度等级

简要题意

给一个字符串,根据字符串含有字符种类及长度有对应的规则对其赋分。

根据该字符串获得分数所在分数段进行对应的输出。

Solution

按题意一直 if-else 模拟就好了。

Code

void R()
{
	string s;
	int ABC=0,abc=0,num=0,sign=0,pts=0;
	cin>>s;
	for (char c:s)
	{
		if (c>='A'&&c<='Z')
			ABC++;
		else if (c>='a'&&c<='z')
			abc++;
		else if (isdigit(c))
			num++;
		else sign++;
	}

	if (s.size()>=8)
		pts+=25;
	else if (s.size()>=5)
		pts+=10;
	else
		pts+=5;

	if (ABC&&abc)
		pts+=20;
	else if (ABC||abc)
		pts+=10;

	if (num>1)
		pts+=20;
	else if (num)
		pts+=10;

	if (sign>1)
		pts+=25;
	else if (sign)
		pts+=10;

	if (ABC&&abc&&num&&sign)
		pts+=5;
	else if ((ABC||abc)&&num&&sign)
		pts+=3;
	else if ((ABC||abc)&&num)
		pts+=2;

	if (pts>=90)
		cout<<"VERY_SECURE";
	else if (pts>=80)
		cout<<"SECURE";
	else if (pts>=70)
		cout<<"VERY_STRONG";
	else if (pts>=60)
		cout<<"STRONG";
	else if (pts>=50)
		cout<<"AVERAGE";
	else if (pts>=25)
		cout<<"WEAK";
	else
		cout<<"VERY_WEAK";
	return;
}

Hard 活动安排

简要题意

个活动,做每个活动需要占用特定的时间段,求在活动占用时间不重合前提下能做的最多活动个数。

Solution

贪心。显然上个任务完成得越早,之后能接的任务越多,至少不劣。

所以将所有任务根据结束时间排序,贪心地做能做的任务就是一个最优解。

Code

void R()
{
	int n,now=0,ans=0;
	cin>>n;
	vector<array<int,2>> v(n);
	for (auto &x:v) cin>>x[1]>>x[0];
	sort(v.begin(),v.end());
	for (auto &x:v)
		if (x[1]>=now)
		{
			now=x[0];
			ans++;
		}
	cout<<ans;
	return;
}
#牛客春招刷题训练营#
全部评论

相关推荐

有担当的灰太狼又在摸鱼:零帧起手查看图片
点赞 评论 收藏
分享
05-19 15:21
已编辑
华南农业大学 Java
白火同学:你才沟通了200,说实话,北上广深杭这里面你连一座城市的互联网公司都没投满呢,更别说还有各种准一线二线城市了。等你沟通突破了三位数,还没结果再考虑转行的事吧。
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 14:35
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务