第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

发布于:2024-04-07 ⋅ 阅读:(126) ⋅ 点赞:(0)

第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

1、字串排序

在这里插入图片描述
在这里插入图片描述

2、门牌制作

在这里插入图片描述

#include<iostream>

#define ll long long
using namespace std;
int ans;
void getsi(int x){
	while(x){
		int t=x%10;
		if(t==2)ans++;
		x/=10;
	}
}
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	for(int i=1;i<=2020;i++){
		getsi(i);
	}
	cout<<ans;
	return 0;
}

3、既约分数

在这里插入图片描述
读懂题意,不然写完了才发现是错的。

#include<iostream>
#include<set>
#define ll long long
using namespace std;
int gcd(int a,int b){
	if(a%b==0)return b;
	return gcd(b,a%b);
}
int ans;
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	for(int i=1;i<=2020;i++)
		for(int j=1;j<=2020;j++){
			//if(i==j)continue;
			if(gcd(i,j)==1)ans++;
		}
	cout<<ans;
	return 0;
}

4、蛇形填数

在这里插入图片描述

#include<iostream>
using namespace std;
const int N = 40; 
int arr[N][N];
int main(){
  	int r = 1;
  	for(int i=1;i<=N;i++){
  		if(i&1){
  			for(int x=i,y=1;x>=1&&y<=i;x--,y++){
  				arr[x][y]=r++;
			}	
		}else{
			for(int y=i,x=1;y>=1&&x<=i;y--,x++){
				arr[x][y]=r++;
			}
		}
  	}
	cout<<arr[20][20];	
  	return 0;
}

5、跑步锻炼

在这里插入图片描述

#include<iostream>
using namespace std;
int ans;
int main(){
    int month[] = {0,31,29,31,30,31,30,31,31,30,31,30,31};
    int num = 0;//总共过了多少天,%7求周一
    for(int i=2000;i<=2020;i++){
    	if(i%100==0||(i%4==0&&i%100!=0))month[2]=29;
    	else month[2]=28;
    	for(int j=1;j<=12;j++){
    		for(int k=1;k<=month[j];k++){
    			// num%7 对应 0~6所以等于2的时候就是周一,k==1 表示初一 
    			if(k==1||num%7==2){
    				ans+=2;
				}else{
					ans+=1;
				}
				num++;
				if(i==2020&&j==10&&k==1){
					cout<<ans;
					return 0;
				}
			}
		}
	}
    return 0;
}

6、七段码

在这里插入图片描述

在这里插入代码片

7、成绩统计

在这里插入图片描述
在这里插入图片描述

#include<iostream>
#include<stdio.h>
#define ll long long
using namespace std;
const int N = 1e5+10;
int n,a[N];
int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	int x=0,b=0;
	for(int i=1;i<=n;i++){
		if(a[i]>=60)x++;
		if(a[i]>=85)b++;
	}
	int a1=x*1000/n;
	int t1=a1%10;
	if(t1>=5)a1=a1/10+1;
	else a1=a1/10;
	int a2=b*1000/n;
	int t2=a2%10;
	if(t2>=5)a2=a2/10+1;
	else a2=a2/10;
	printf("%d%\n%d%\n",a1,a2);
	return 0;
}

8、回文日期

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

9、子串分值和

在这里插入图片描述
在这里插入图片描述

在这里插入代码片

10、平面切分

在这里插入图片描述
在这里插入图片描述

在这里插入代码片