2021蓝桥杯国赛真题

最近一直没有在学习。
蓝桥杯侥幸进了决赛,要好好准备一下,不能像省赛时候一样混了。
今天开始好好学习,认真记录一下。

A

5分

B

5分

直接暴力枚举

C

0分

这题答案是977,我写成了978,是因为文件读入的时候,把最后一行的空行也读入了,因此要注意文件写入时候的格式,文件要检查一下是否标准。
本题我的做法就是用excel弄出日期,然后放到文档里文件写入,十分方便。本题主要学习文件读入的写法。

#include<iostream>

using namespace std;
#include<cmath>
#include<iostream>
#include<fstream>
#include<string>
int main() 
{   
	int ans=0;
    fstream  f("日期.txt");//创建一个fstream文件流对象
    string  line; //保存读入的每一行
    while(getline(f,line))//会自动把\n换行符去掉 
    {
        //读取的值是line
        int sum=0;
        //cout<<line<<endl; 
		for(int i=0;i<line.length();i++){
			if(line[i]!='/'){
				sum+=(line[i]-'0');
			}
		} 
		if(sqrt(sum)==(int)sqrt(sum)){
			ans++;
		}
    }
    cout<<ans;
    
    return  0;

}

D

0分

不难,但是我没想到用dp做,我以为是用树的知识

/*
一道dp题 
*/ 

#include<iostream>

using namespace std;

const int M=2030;

long long w[M];


int main(){
	int n=2021;	
	w[0]=0;
	for(int i=1;i<=n;i++){
		w[i]=-1;//初始化,-1表示没有搜到	
	}
	
	for(int i=1;i<=n;i++){
		//左右子节点个数加起来应该是i-1啊 
		//对于每个节点数i,左侧有m个点,右侧则有i-1-m个点 
		//设左侧有m个节点 
		//先初始化一个左侧无节点的情况 
		w[i]=1+2*w[0]+3*w[i-1]+0;
		for(int m=1;m<=i-1;m++){
			w[i]=min(w[i],1+2*w[m]+3*w[i-1-m]+m*m*(i-1-m));
		} 
	}		
	for(int i=1;i<=n;i++)
		cout<<w[i]<<endl;
	return 0;
}

E

15分
在这里插入图片描述

送分题,一定不能丢


#include<iostream>
#include<string.h>

using namespace std;

int main(){
	string s;
	cin>>s;
	
	for(int i=0;i<s.length();i++){
		if(s[i]>='a'&&s[i]<='z'){
			s[i]=s[i]+'A'-'a';
		}
		cout<<s[i]; 
	}
	return 0;
}

F

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值