【ACM】—蓝桥杯大一暑期集训Day5

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。
🏀系列专栏:陈童学的日记
💡其他专栏:C++STL,感兴趣的小伙伴可以看看。
🎁希望各位→点赞👍 + 收藏⭐️ + 留言📝 ​
⛱️学习应使你快乐!望与诸君共勉!

在这里插入图片描述

前言

因参加了我校的ACM暑期集训为之后的xcpc等赛事做准备,所以就有了此文哈哈。本文主要复盘做题的过程以及一些感悟,便于复习巩固。辣么现在废话也不多说啦,直接往下看吧哈哈。

A - 关于gcd

来源:洛谷P4549 【模板】裴蜀定理
算法标签:数学、最大公约数、gcd不定方程
在这里插入图片描述

解题思路

这题要用到裴蜀定理(或称贝祖定理),那么这个勾八定理是干啥的,怎么用呢?它其实就是二元一次方程ax+by=c存在整数解时c应为a、b的最小公约数。但是这里要注意将负数变为正后再求。

示例代码

#include<bits/stdc++.h>
using namespace std;
int n,a,res;
int gcd(int x,int y)
{
	return !y?x:gcd(y,x%y); 辗转相除法求最大公约数
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a;
		a=a>0?a:-a;
		res=gcd(res,a);
	}
	cout<<res;
}

B - gcd区间

来源:洛谷P1890 gcd区间
算法标签:数学
在这里插入图片描述

解题思路

这题就是求所给区间的最大公约数,我看有大佬用线段树做的(但是我不会哈哈),我用动规思想做的

示例代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a,b,k[1005][1005],d,p;
int main()
{
	cin>>a>>b;
	for(int i=1;i<=a;i++)
		cin>>k[i][i];
	for(int i=a-1;i>=1;i--)
		for(int j=i+1;j<=a;j++)
			k[i][j]=__gcd(k[i][i],k[i+1][j]);
	for(int i=1;i<=b;i++)
	{
		cin>>d>>p;
		cout<<k[d][p]<<endl;
	}		

}

C - Cipher Shifer

来源:CodeforcesA. Cipher Shifer
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

解题思路

遍历字符串并更新字符即可

示例代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t,n;
	cin>>t;
	for(int i=0;i<t;i++)
	{
		cin>>n;
		char c[110],b;
		cin>>c;
		b=c[0];
		for(int j=1;j<n;j++)
		{
			if(b==c[j])
			{
				cout<<c[j];
				j++;
				b=c[j];
			}
		}
		if(i!=t-1)
			cout<<endl;
	}
}

D - 质数筛

来源:洛谷P5736 【深基7.例2】质数筛
在这里插入图片描述

解题思路

这题其实写个判断素数的函数就OK了,对啦,质数就是素数哦!

示例代码

#include<bits/stdc++.h>
using namespace std;
int n,m;
bool judge(int x)
{
	if(x<=1)
		return false;
	for(int i=2;i<=sqrt(x);i++)
	{
		if(x%i==0)
			return false;
	}
	return true;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>m;
		if(judge(m))
			cout<<m<<" ";
	}
}

E - 完全平方数

来源:洛谷P8754 [蓝桥杯 2021 省 AB2] 完全平方数
算法标签:数论、素数判断、质数、筛法
在这里插入图片描述

解题思路

完全平方数想必大家都听过撒,而完全平方数有一个性质:完全平方数的质因子的指数一定为偶数。
什么意思呢?如:36=2^2 x 3^2= 6^2

示例代码

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,x=1;
int main()
{
	cin>>n;
	for(ll i=2;i*i<=n;i++)
	{
		int cnt=0;
		while(n%i==0)
			cnt++,n/=i;
		if(cnt%2==1)
			x*=i;
	}
	x*=n;
	cout<<x;
}

F - Vika and Her Friends

来源:CodeforcesA. Vika and Her Friends
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

解题思路

如果距离为奇数,那么就抓不住Vika,只有为偶数时才能抓住(我也不知道怎么说啦)

示例代码

#include<bits/stdc++.h>
using namespace std;
int t;
int n,m,k;
int x,y,a,b,flag;
int main()
{	
	cin>>t;
	while(t--)
	{
		flag=0;
		cin>>n>>m>>k>>x>>y;
		for(int i=0;i<k;i++)
		{
			cin>>a>>b;
			if((abs(x-a)+abs(y-b))%2==0)
				flag=1;
		}
		if(flag)
			printf("NO\n");
		else
			printf("YES\n");
	}
}

总结

ADay5的题主要是数论的题。
算法:数论、最大公约数
感悟:想要学好算法,数学还是不能落下的呀(手动哭脸)
总结:数论的题偏数学里的解题思路

  • 72
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 62
    评论
蓝桥杯国赛是中国最大的计算机竞赛之一,参加者需要在规定的时间内完成一系列的编程题目。蓝桥杯国赛的竞争非常激烈,每年都有数以万计的学生报名参赛。 我很荣幸地告诉大家,我在最近一次的蓝桥杯国赛中获得了三等奖。这对我来说是一项非常重要的成就,也是我多年来努力学习计算机科学的回报。 在获得三等奖的过程中,我遇到了很多挑战。首先是题目的难度,比赛中出现的问题需要有深厚的计算机基础和扎实的编程能力。其次,在限定的时间内完成多个题目也需要灵活的思维和高效的执行能力。此外,比赛还有一定的压力和紧张氛围,需要保持冷静和集中精力。 在准备蓝桥杯国赛之前,我付出了大量的时间和精力。我参加了许多培训班和辅导课程,学习了算法、数据结构和编程技巧。我还刷了很多以往比赛的真题,提高了自己的编程水平。除此之外,我还积极参与学校的ACM俱乐部活动,和其他同学一起切磋学习,相互交流经验。 获得三等奖对我来说是一种认可和鼓励。它让我相信,只要付出努力并持之以恒,就能够获得回报。同时,这也增强了我的自信心,让我更加坚定地向着更高的目标迈进。 对我来说,蓝桥杯国赛不仅是一次比赛,更是一次学习和成长的机会。它推动着我不断提升自己,探索计算机科学的无限可能。我会继续努力学习,为以后的比赛做好准备,争取取得更好的成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈童学哦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值