目录
2020年蓝桥省赛第二场(c++-A组)
题目可见官网-学习资料-历届真题https://www.lanqiao.cn/courses/2786/learning/?id=88883
题解不全待补充
TA
//思路:统计2 出现的个数 结果:624
#include<bits/stdc++.h>
using namespace std;
int main(){
int ans=0;
for(int i=1;i<2021;i++){
int n=i;
while(n){
int tmp=n%10;
n/=10;
if(tmp==2){
ans++;
}
}
}
cout<<ans;
return 0;
}
TB
//思路:数据量不大,暴力求解,判断两个数是否公约数为1
//结果: 2481215
#include<bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
return b==0? a: gcd(b,a%b);
}
int main(){
int ans=0;
for(int i=1;i<2021;i++){
for(int j=i+1;j<2021;j++){
if(gcd(i,j)==1){
ans++;
}
}
}
//分子分母换一下也是
//还要加个1 ,因为忽略了1
cout<<ans*2+1;
return 0;
}
TC
//思路: 先打印个不是蛇形的参考下 ,对角线的数是固定的只是不是题目要求的那样顺序 ,n行n列的元素不变
//20行20列需要至少需要打印2*20-1条对角线
//结果:761
#include<bits/stdc++.h>
using namespace std;
const int maxn=400+9;
int a[maxn][maxn];
int main(){
memset(a,0,sizeof(a));
for(int i=1;i<2*20;i++){
//每个开头数字为[n*(n-1)]/2+1
int num=(i*(i-1))/2+1;
a[1][i]=num;
for(int j=i-1;j>0;j--){
a[i+1-j][j]=++num;
}
}
cout<<a[20][20];
return 0;
}
TD
TE
TF
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e4+9;
int g[maxn];
int main(){
int n;
cin>>n;
int sum=0;//即使所有都是100分,最大可以加到1e5,int装得下
for(int i=0;i<n;i++){
cin>>g[i];
sum+=g[i];
}
sort(g,g+n);
cout<<g[0]<<endl;//lowest
cout<<g[n-1]<<endl;//high
printf("%.2f",1.0*sum/n);
return 0;
}
TG
//思路:
//可以先判断是否为回文再判断下面的;
//首先需要满足年月日常识,4 6 7 9 11不超过31天;
//2月分平年闰年, 2月份年份必是以20结尾的,必定是闰年,只要日期不超过29即可;
#include<bits/stdc++.h>
using namespace std;
int ck(int n){
stringstream ls;
string sn;
ls<<n;
ls>>sn;
string st=sn.substr(0,4),en=sn.substr(4,8);
reverse(st.begin(),st.end());
if(st!=en){
return 0;//不是回文
}else{
if(st.substr(0,2)==st.substr(2,4)){
return 2;//是ab型回文
}else{
return 1;//是回文
}
}
}
int main(){
int n;
cin>>n;
int flag1=0,flag2=0;
for(int i=n+1;i<99991231;i++){
int m=(i/100)%100,d=i%100;
if(d==0||m==0){
continue;
}
if(d%10==0){
continue;
}
if(d>31||m>12){
continue;
}
if(m==2&&d>29){
continue;
}
if((m==4||m==6||m==9||m==11)&&d>30){//不符合日期
continue;//日期整十的无法凑成年
}
int ckres=ck(i);
if(ckres==0){
continue;
}else if(ckres==2){
if(!flag1){
flag1=i;
}
if(!flag2){
flag2=i;
}
}else if(ckres==1&&!flag1){
flag1=i;
}
if(flag1&&flag2){
break;
}
}
cout<<flag1<<endl<<flag2;
return 0;
}
TH
TI
TJ