第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
文章目录
- 第十一届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
- 1、字串排序
- 2、门牌制作
- 3、既约分数
- 4、蛇形填数
- 5、跑步锻炼
- 6、七段码
- 7、成绩统计
- 8、回文日期
- 9、子串分值和
- 10、平面切分
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、平面切分
在这里插入代码片