• 2021年蓝桥杯第一次训练赛


    A

    • TAG:签到题

    题面及代码见校内 第一届ACM校赛——热身赛 A题


    B

    More Info中有详细的提示,即注意不要读入行末的换行符,在此不作过多解释。

    • TAG:文件读入相关;签到题

    PZ.cpp

    #include<cstring>
    #include<iostream>
    #include<string>
    using namespace std;
    int T;
    string s;
    int main(){
        scanf("%d
    ",&T);
        while(T--){
            getline(cin,s);
            cout<<s<<endl;
        }
        return 0;
    }
    

    C

    • PZ's solution:

    本题题面坚持要求编写这么一个函数,说实话,我嫌麻烦,那么按照题意即可。

    注意输入的元素值均为0的情况即可。

    • TAG:模拟;签到题

    PZ.cpp

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int a[10000005];
    int CompactIntegers(int s[],int n){
    	int i=1,tmp=0;
    	for(int i=1;i<=n;++i) if(s[i]!=0) s[++tmp]=s[i];
    	for(int i=1;i<=tmp;++i) printf("%d%c",s[i],(i==tmp ? '
    ' : ' '));
    	return tmp;
    }
    int main(){
    	int n;
    	scanf("%d",&n);
    	for(int i=1;i<=n;++i) scanf("%d",&a[i]);
    	printf("%d",CompactIntegers(a,n));
    	return 0;
    }
    

    D

    • PZ's solution:

    1.对于平面直角坐标系下的两点((x_1,y_1),(x_2,y_2))所构成的直线,若其斜率存在,斜率计算公式为

    [frac{y_1-y_2}{x_1-x_2} ]

    2.当斜率不存在(斜率趋近(infty))时,当且仅当(x_1-x_2=0)

    3.由于C++允许double类型出现 (-0.0) 的运算结果,所以对斜率为(0),即(y_1-y_2=0)的情况进行特判输出;

    • TAG:数学;签到题

    PZ.cpp

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    double x_1,x_2,y_1,y_2;
    int main(){
    	while(scanf("%lf %lf %lf %lf",&x_1,&y_1,&x_2,&y_2)!=EOF){
    		if(x_1-x_2==0) printf("INF
    
    ");
    		else if(y_1-y_2==0) printf("0.00
    ");
    		else printf("%.2lf
    
    ",(y_1-y_2)/(x_1-x_2));
    	}
    	return 0;
    }
    

    E

    • TAG:模拟;签到题

    PZ.cpp

        #include<iostream>
        #include<cstdio>
        #include<cstring>
        #include<algorithm>
        #include<cmath>
        using namespace std;
        int n,ans;
        int main(){
        	scanf("%d",&n);
        	while(n!=1){
        		++ans;
        		if(n%2==0) n=n/2;
        		else n=(3*n+1)/2;
        	}
        	printf("%d",ans);
        	return 0;
        }
    

    F

    • PZ's solution:

    运用短除法,倒序输出余数即可,例如:

    (6_{(10)}=110_{(2)})

    • TAG:数学;签到题

    PZ.cpp

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    int a,b,d,res,ans[1000005];
    int main(){
    	scanf("%d %d %d",&a,&b,&d);
    	res=a+b;
    	while(res!=0){
    		ans[++ans[0]]=res%d;
    		res/=d;
    	}
    	for(int i=ans[0];i>=1;--i) printf("%d",ans[i]);
    	return 0;
    }
    

    G

    • 快速幂模板,注意p取0或1的情况即可;
    • TAG:快速幂;数学

    PZ.cpp

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    #define int long long
    long long a,b,p;
    long long qpow(long long x,long long k){
    	if(k==0) return 1%p;
    	long long res=x; --k;
    	while(k){
    		if(k&1) res=res*x%p;
    		x=x*x%p;
    		k>>=1;
    	}
    	return res;
    }
    signed main(){
    	scanf("%lld %lld %lld",&a,&b,&p);
    	printf("%lld",qpow(a,b));
    	return 0;
    }
    

    赛后总结

    1.本次比赛比较基础,所有集训队队员应该在比赛期间将所有题目尽数AC;

    2.对于本次比赛,A~E题比较基础,其中:

    B题考察了ACM竞赛中可能出现的读入陷阱;

    C题虽然题面看似要求苛刻,但完成方法很多,如果不是基本语句掌握不熟练,不必强求按照累赘的方法完成本题;

    D题考察了ACM竞赛中可能出现的输出陷阱(对于集训队队员来说,这是本次比赛不能犯的错误,因为这一陷阱在之前的练习题HDU 3500 Fling出现过);

    3.F题考察了进制转换,对此不熟悉的同学应该加强练习,进制运算是算法竞赛中十分常见的内容,而且也是很多算法的点睛之笔;

    4.G题承接自F题,真正考察了一个比较套路的算法:快速幂,快速幂的理解与进制转换密不可分,这里给出题人点个赞(๑•̀ㅂ•́)و✧;

    5.总的来说,为了照顾到所有在校学生,本次比赛的难度是有所克制的(看看寒假第一次练习赛就知道,难度的差距是天上地下),而集训队成员要快速准确完成这些题目,并熟稔于心,向蓝桥杯进发!

    ps.蓝桥杯的历届真题,我会去更的,我不想当鸽子,咕咕咕~

  • 相关阅读:
    美化滚动条
    js 格式转化
    vue 实现 前端生成随机验证码
    Vue.js CLI4 Vue.config.js标准配置
    在鼠标右键 新建 添加md文件
    节流和防抖
    关于IE 浏览器 GET 请求缓存问题
    VSCode 背景插件
    Java后台开发Tomcat添加https支持小程序开发过程
    InnoDB与MyISAM等存储引擎对比
  • 原文地址:https://www.cnblogs.com/Potrem/p/2021_dasai_lanqiao_1.html
Copyright © 2020-2023  润新知