0
点赞
收藏
分享

微信扫一扫

第十三届蓝桥杯C/C++大学B组真题题解(一)

罗蓁蓁 04-11 19:00 阅读 2

1、扫雷

2cec7ea29aad4b9fa9d00638708f811b.png

06c8d6ce44d64c65ae9e8ba0b1b777bf.png

#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=110;
int g[N][N];
int dx[8]={-1,-1,-1,0,1,1,1,0};
int dy[8]={-1,0,1,1,1,0,-1,-1};
int dfs(int x,int y){
	int ans=0;
	for(int i=0;i<8;i++){
		int a=x+dx[i],b=y+dy[i];
		if(a<0||a>n-1||b<0||b>m-1||g[a][b]==0)continue;
		else if(g[a][b]==9)ans++;
	}	
	return ans;
}
int main(){
	cin>>n>>m;
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cin>>g[i][j];
			if(g[i][j]==1){
				g[i][j]=9;
			}
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			if(!g[i][j]){
				g[i][j]=dfs(i,j);
			}
		}
	}
	for(int i=0;i<n;i++){
		for(int j=0;j<m;j++){
			cout<<g[i][j]<<" ";
		}
		cout<<endl;
	}
	return 0;
} 

2、九进制转十进制

ca77d7d606454b6699436e60641bed92.png

#include <bits/stdc++.h>
using namespace std;
int main()
{
    string s = "2022";
    int ans = 0;
    for(int i=0;i<s.length();i++){
        ans = ans*9+s[i]-'0';
    }
    cout << ans << endl;
    return 0;
}

3、顺子日期

7e78e9c1209a4725994abac50d90a22f.png

#include <iostream>
using namespace std;
//2022年二月28天 
int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
bool check(int q[]){
    for(int i=3;i<=5;i++)//顺子头最低从3开始,5结束 
      if(q[i]==(q[i+1]-1)&&q[i+1]==(q[i+2]-1)){ 
        return true;
      }
    return false;
}
int main()
{ 
  int q[8]={2,0,2,2};
  int res=0;
  for(int i=1;i<=12;i++){
      q[4]=i/10%10;//得月份第一位 
      q[5]=i%10;//第二位 
      for(int j=1;j<=day[i];j++){
          q[6]=j/10%10;
          q[7]=j%10;
          if(check(q)){
            res++;
          }
      }
    }
    cout<<res;
  return 0;
}

4、刷题统计

639e5e9354d54174b5aa169106e0aa0d.png

#include <iostream>
using namespace std;
typedef long long ll;//数据范围很大用longlong 
ll a,b,n,add,day;
int main()
{
  cin>>a>>b>>n;
  int tem=5*a+2*b;//一个周期刷的数量 
  ll week=n/tem;//需要得周数 
  ll last=n%tem;//剩余的题目数 
  day+=week*7;//先加上 
  int x=1;
  while(last>0)//全部减完即为答案 
  {
    if(x%7==6||x%7==0)last-=b;//周末 
    else last-=a;//周一到五 
    day++;
    x++;
  }
  cout<<day<<endl;
  return 0;
}

5、修剪灌木

7635385cf4c947b3a32a95b08903c8ea.png

#include <iostream>
using namespace std;
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cout<<max(i-1,n-i)*2<<endl;
	}
	return 0;
}

 

 

举报

相关推荐

0 条评论