当前位置:首页 » 《休闲阅读》 » 正文

第十届蓝桥杯省赛真题(C/C++大学B组)

5 人参与  2024年04月20日 16:24  分类 : 《休闲阅读》  评论

点击全文阅读


目录

试题 A: 组队

试题 B: 年号字串

试题 C: 数列求值

试题 D: 数的分解

试题 E: 迷宫

试题 F: 特别数的和

试题 G:完全二叉树的权值

试题 H:等差数列

试题 I:后缀表达式(不一定对)

试题 J:灵能传输(不会)


试题 A: 组队

答案:490

试题 B: 年号字串

#include <bits/stdc++.h>using namespace std;int main(){//26进制数 int n;cin>>n;string s = "111";for(int i = s.length() - 1;i >=0;i--){s[i] = 'A' - 1 + n % 26;n /= 26;}cout<<s<<endl;return 0;}

试题 C: 数列求值

#include <bits/stdc++.h>using namespace std;int main(){int a1=1,a2=1,a3=1,ans=0;for(int i = 4;i <= 20190324;i++){ans = (a3 + a2 + a1) % 10000;a1 = a2;a2 = a3;a3 = ans;}cout<<ans<<endl;return 0;}

试题 D: 数的分解

#include <bits/stdc++.h>using namespace std;bool judge(int n){int t;while(n > 0){t = n % 10;if(t == 2 || t == 4) return false;n /= 10;}return true;}int main(){int ans = 0;for(int a = 1;a < 2019;a++){if(!judge(a)) continue;for(int b = a + 1;b < 2019 - a - b;b++){if(judge(b) && judge(2019 - a - b))  ans++;}}cout<<ans<<endl;return 0;}

试题 E: 迷宫

#include<bits/stdc++.h>using namespace std;int mapp[502][502],vis[502][502],n,m,maxn;int dir[4][2]={1,0,0,-1,0,1,-1,0};char di[4]={'D','L','R','U'};string str1;struct node{int x,y,num;string str;};void bfs(int x,int y,string str,int num){queue<node> que;node aa;aa.x=x;aa.y=y;aa.str=str;aa.num=num;que.push(aa);     vis[1][1]=1;while(!que.empty()){node no=que.front();que.pop();//cout<<no.x<<" "<<no.y<<" "<<no.num<<" "<<no.str<<endl;if(no.x==n&&no.y==m) { maxn=no.num; str1=no.str; break; }for(int i=0;i<4;i++){   int xx=dir[i][0]+no.x;           int yy=dir[i][1]+no.y;           if(xx<=n&&xx>=1&&yy<=m&&yy>=1)           if(!mapp[xx][yy])           if(!vis[xx][yy])           {           vis[xx][yy]=1;no.str.push_back(di[i]);           node a;           a.x=xx;           a.y=yy;           a.str=no.str;           a.num=no.num+1;           //cout<<a.x<<" "<<a.y<<" "<<a.num<<" "<<a.str<<endl;           que.push(a);           no.str.erase(no.str.size()-1);   }}}}int main(){cin>>n>>m;string str;for(int i=1;i<=n;i++)  {  char c;  c=getchar();   for(int j=1;j<=m;j++)    {    c=getchar();        mapp[i][j]=c-'0';}    }     maxn=99999999;        bfs(1,1,str,0);    cout<<maxn<<endl<<str1;return 0; }

试题 F: 特别数的和

#include <bits/stdc++.h>using namespace std;int sum;bool judge(int n){int t = 0;while(n > 0){t = n % 10;if(t == 0 || t == 1 || t == 2 || t == 9)return true;n /= 10;}return false;}int main(){int n;cin>>n;for(int i = 1;i <= n;i++){if(judge(i)) sum += i;}cout<<sum<<endl;return 0;}

试题 G:完全二叉树的权值

#include <bits/stdc++.h>using namespace std;int arr[10000];int sum[10000];int n;int main(){cin>>n;for(int i = 1;i <= n;i++)cin>>arr[i];int num = 1;for(int i = 1;i <= n;i++){if(i >= pow(2,num)) num++;sum[num] += arr[i];}int max = sum[1];int flag = 1;for(int i = 1;i <= n;i++){if(sum[i] > max){max = sum[i];flag = i;}}cout<<flag<<endl;return 0;}

试题 H:等差数列

#include <bits/stdc++.h>using namespace std;int arr[100000+10];int main(){int n;cin>>n;for(int i = 1;i <= n;i++)cin>>arr[i];//1、先排序sort(arr+1,arr+n+1,less<int>());//2、找到相邻两个数字的最小差int m = arr[n];for(int i = 2;i <= n;i++) if(arr[i] - arr[i-1] < m) m = arr[i] - arr[i-1];//3、(最大值 - 最小值) / 最小差 + 1//cout<<arr[1]<<"---"<<arr[n]<<endl; int ans = (arr[n] - arr[1]) / m + 1;cout<<ans<<endl; return 0;}

试题 I:后缀表达式(不一定对)

#include <bits/stdc++.h>using namespace std;int arr[100000+10];long long ans;int main(){int n,m;cin>>n>>m;int len = n + m + 1;for(int i = 1;i <= len;i++)cin>>arr[i];//1、排序sort(arr+1,arr+n+m+2,less<int>());//2、累加,先减负数,在加for(int i = 1;i <= len;i++){if(m-- > 0) ans -= arr[i];else ans += arr[i];} cout<<ans<<endl;return 0;}

试题 J:灵能传输(不会)


点击全文阅读


本文链接:http://zhangshiyu.com/post/98109.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1