第十二届蓝桥杯全国决赛
A
题目描述:
我是***,我不知道
答案:25
B
题目描述:
开头两题直接***,这题又没读清题目,存质数,首先自己是质数然后再去判断每一位是不是质数
代码:
#include<bits/stdc++.h> using namespace std; const int N=20210605; bool st[N]; int prime[N],cnt; void get_primes(){//欧拉筛 memset(st,true,sizeof(st)); cnt=0; st[0]=st[1]=false; for(int i=2;i<=N;i++){ if(st[i]) prime[cnt++]=i; for(int j=0;j<cnt;j++){ if(i*prime[j]>N) break; st[i*prime[j]]=false; if(i%prime[j]==0) break; } } } bool chk(int n){//判断是不是纯质数 if(!st[n]) return false; while(n){ if(!st[n%10]) return false; n/=10; } return true; } int main(){ get_primes(); int ans=0; for(int i=1;i<=20210605;i++){ if(chk(i)) ans++; } cout<<ans<<endl; return 0; } //答案:1903
C
题目描述:
在考试的时候,也马虎了一下,差点就错了,这么简单的题目,没错直接写答案吧。用数组记录每一个月有多少天,三重循环遍历每一天就行了。
答案:977
D
题目描述:
考试没写出,猜了是完全二叉树的情况,但是没算出来,太菜了。
看了大佬题解发现,是DP;感觉DP白学了。
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll dp[2030]; ll INF=1e18; int main(){ for(int i=1;i<=2021;i++){ dp[i]=INF; for(int j=0;j<i;j++){ dp[i]=min(dp[i],1+2*dp[j]+3*dp[i-1-j]+j*j*(i-1-j)); } } cout<<dp[2021]<<endl; return 0; }
D
题目描述:
水题,决赛比省赛似乎都简单,但是后面的题要得高分很难
代码:
#include<bits/stdc++.h> using namespace std; typedef long long ll; string s; int main(){ cin>>s; for(int i=0;i<s.size();i++){ if(s[i]>='a'&&s[i]<='z') s[i]-=32; } cout<<s<<endl; return 0; }
F