首页 历年蓝桥杯省赛B组真题试题

历年蓝桥杯省赛B组真题试题

举报
开通vip

历年蓝桥杯省赛B组真题试题(1)煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),如果一共有100层,共有多少个煤球?题解:纯粹的数学题而已inta[101]={0};for(inti=1;i<101;i++)a[i]=a[i-1]+i;intans=0;for(intj=1;j<101;j++)ans+=a[j];printf("%d\n",ans);(2)生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现...

历年蓝桥杯省赛B组真题试题
(1)煤球数目有一堆煤球,堆成三角棱锥形。具体:第一层放1个,第二层3个(排列成三角形),第三层6个(排列成三角形),第四层10个(排列成三角形),如果一共有100层,共有多少个煤球?题解:纯粹的数学题而已inta[101]={0};for(inti=1;i<101;i++)a[i]=a[i-1]+i;intans=0;for(intj=1;j<101;j++)ans+=a[j];printf("%d\n",ans);(2)生日蜡烛某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛。现在算起来,他一共吹熄了236根蜡烛。请问,他从多少岁开始过生日party的?请填写他开始过生日party的年龄数。题解:暴力枚举。第一重循环枚举刚开始过生日时候的岁数。第二重循环是枚举现在的岁数第三重循环就是将刚开始过生日的岁数和现在的岁数加起来。intstart,end;for(start=1;start<236;start++){for(end=start;end<236;end++){intsum=0;for(inti=start;i<=end;i++)sum+=i;if(sum==236)printf("start:%dend:%d\n",start,end);3)BDEFA+—+——=10CGHI(如果显示有问题,可以参见【图1.jpg】)这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。比如:6+8/3+952/714就是一种解法,5+3/1+972/486是另一种解法。这个算式一共有多少种解法?//29题解:DFS+回溯由于计算机中5/2会等于2,而且如果打算采用精度方面的处理的话,会很麻烦,而且很容易错。所以,把这些式子全部变成乘法形式就好了。A*C*GHI+B*GHI+DEF*C=10*C*GHI代码:intvisit[10],num[10];intsum=0;voiddfs(intn){if(n==10){intb=num[7]*100+num[8]*10+num[9];//GHIinta=num[4]*100+num[5]*10+num[6];//DEF//cout< 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 并填写划线部分缺少的代码。#includevoidswap(inta[],inti,intj){intt=a[i];a[i]=a[j];a[j]=t;}intpartition(inta[],intp,intr){inti=p;intj=r+1;intx=a[p];while(1){while(ix);//一样的,一直左移直到小于x时if(i>=j)break;//如果一直移动到了相交的区间,说明这个区间内都是由小到大的,就直接退拉!不用交换啦!swap(a,i,j);//有的话呢,就交换,这样保证了左小右大。}returnj;voidquicksort(inta[],intp,intr){if(p#defineN6#defineM5#defineBUF1024voidf(inta[],intk,intm,charb[]){inti,j;if(k==N){b[M]=0;if(m==0)printf("%s\n",b);return;}for(i=0;i<=a[k];i++){for(j=0;j 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 ?请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。题解:1580深搜+回溯,填完之后在判断是否可以。#include#includeintflag[3][4];//表示哪些可以填数intmpt[3][4];//填数boolvisit[10];intans=0;voidinit()//初始化{inti,j;for(i=0;i<3;i++)for(j=0;j<4;j++)flag[i][j]=1;flag[0][0]=0;flag[2][3]=0;}voidSolve(){intdir[8][2]={0,1,0,-1,1,0,-1,0,1,1,1,-1,-1,1,-1,-1};intbook=true;for(inti=0;i<3;i++){for(intj=0;j<4;j++){//判断每个数周围是否满足if(flag[i][j]==0)continue;for(intk=0;k<8;k++){intx,y;x=i+dir[k][0];y=j+dir[k][1];if(x<0||x>=3||y<0||y>=4||flag[x][y]==0)continue;if(abs(mpt[x][y]-mpt[i][j])==1)book=false;}}}if(book)ans++;}voiddfs(intindex){intx,y;x=index/4;y=index%4;if(x==3){Solve();return;}if(flag[x][y]){for(inti=0;i<10;i++){if(!visit[i]){visit[i]=true;mpt[x][y]=i;dfs(index+1);visit[i]=false;}}}else{dfs(index+1);}}intmain(){init();dfs(0);printf("%d\n",ans);return0;(7)剪邮票如【图l.jpg】,有12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。(仅仅连接一个角不算相连)比如,【图2.jpg】,【图3.jpg】中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。请填写表示方案数目的整数。注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。123456789101112△题解:这个题目跟上一道题目类似,看来这一届的深搜很火啊。跟上面一样的套路。#include#ineludeintmpt[3][4];intmpt_visit[3][4];intnum[6];inthave[13];intvisit[13];intans=0;intCount=0;voidinit(){intk=1;for(inti=0;i<3;i++)for(intj=0;j<4;j++){mpt[i][j]=k;k++;}}intdir[4][2]={0,1,0,-1,-1,0,1,0};//判断五个数是否能连在一起voiddfs_find(intx,inty){for(inti=0;i<4;i++){inttx,ty;tx=x+dir[i][0];ty=y+dir[i][1];if(tx<0||tx>=3||ty<0||ty>=4)continue;if(have[mpt[tx][ty]]==0||mpt_visit[tx][ty])continue;mpt_visit[tx][ty]=1;Count++;dfs_find(tx,ty);}}voidSolve(){inti;memset(have,0,sizeof(have));memset(mpt_visit,0,sizeof(mpt_visit));for(i=1;i<6;i++)have[num[i]]=1;for(i=0;i<12;i++){intx,y;x=i/4;y=i%4;if(have[mpt[x][y]]){Count=1;mpt_visit[x][y]=1;dfs_find(x,y);break;}}if(Count==5){ans++;}}//创建5个数的组合voiddfs_creat(intindex){if(index==6){Solve();return;}for(inti=num[index-1]+1;i<13;i++){if(!visit[i]){visit[i]=true;num[index]=i;dfs_creat(index+1);visit[i]=false;}}}intmain(){init();dfs_creat(1);printf("%d\n",ans);return0;(8)四平方和四平方和定理,又称为拉格朗日定理:每个正整数都可以表示为至多4个正整数的平方和。如果把0包括进去,就正好可以表示为4个数的平方和。比如:5=0A2+0A2+1A2+227=1人2+1人2+1人2+22(A符号表示乘方的意思)对于一个给定的正整数,可能存在多种平方和的表示法。要求你对4个数排序:0<=a<=b<=c<=d并对所有的可能表示法按a,b,c,d为联合主键升序排列,最后输出第一个表示法程序输入为一个正整数N(N<5000000)要求输出4个非负整数,按从小到大排序,中间用空格分开例如,输入:5则程序应该输出:0012再例如,输入:12则程序应该输出:0222再例如,输入:773535则程序应该输出:1267838资源约定:峰值内存消耗<256MCPU消耗<3000ms请严格按要求输出,不要画蛇添足地打印类似:“请您输入...”的多余内容。所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。注意:main函数需要返回0注意:只使用ANSIC/ANSIC++标准,不要调用依赖于编译环境或操作系统的特殊函数。注意:所有依赖的函数必须明确地在源文件中#include,不能通过工程设置而省略题解:一道水题。水的不能在水。从样例就可以看出来它找的顺序了。直接对你输入的数字开根号,然后一个一个往下缩,直到下一个数要大于第一个数就停。然后对剩下的开根号,一直开完就好了,这样另外一个快速的方法。用网上的。先把两个平方数能相加的到的数字球出来然后记录。我们第三层循环就可以先判断再循环了。intmpt[5000010]={0};〃mpt[i]=1表示i能够用两个完全平方数相加而得。intn;voidinit(){for(inti=0;i*i<=n;i++)for(intj=0;j*j<=n;j++)if(i*i+j*j<=n)mpt[i*i+j*j]=1;}intmain(){intflag=false;scanf("%d",&n);init();for(inti=0;i*i<=n;i++){for(intj=0;j*j<=n;j++){if(mpt[n-i*i-j*j]==0)continue;//如果剩下的差用两个完全平方数不能组合出来就不继续for(intk=0;k*k<=n;k++){inttemp=n-i*i-j*j-k*k;doublel=sqrt((double)temp);if(l==(int)l){printf("%d%d%d%d\n",i,j,k,(int)l);flag=true;break;}}if(flag)break;}if(flag)break;}return0;}(9)交换瓶子有N个瓶子,编号1~N,放在架子上。比如有5个瓶子:1354要求每次拿起2个瓶子,交换它们的位置。经过若干次后,使得瓶子的序号为:12345对于这么简单的情况,显然,至少需要交换2次就可以复位。如果瓶子更多呢?你可以通过编程来解决。输入格式为两行:第一行:一个正整数N(N<10000),表示瓶子的数目第二行:N个正整数,用空格分开,表示瓶子目前的排列情况。输出数据为一行一个正整数,表示至少交换多少次,才能完成排序。例如,输入:51254程序应该输出:3再例如,输入:554321程序应该输出:2题解:这道题目就是典型的贪心题了。从最左边的那个下标开始,往右边找最小的数字。然后从次左边的那个下标开始,找剩余右边的最小的数字然后交换。这样的复杂度是O(n*n);会超时。因为这个题目的编号是1~n;所以可以用两个数组,一个存输入的数组,一个标识该数应该是在第几个位置。然后直接一个循环,#include#includeusingnamespacestd;constintmaxn=1e5+10;intmain(){intnum[maxn],bb[maxn];intn,sum=0;cin>>n;for(inti=1;i<=n;++i){cin>>num[i];bb[num[i]]=i;}for(inti=1;i<=n;++i){if(num[i]==i)continue;elseif(num[i]!=i){if(i==num[num[i]])swap(num[i],num[num[i]]),++sum;elsesum+=2;}}cout<
本文档为【历年蓝桥杯省赛B组真题试题】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_113440
暂无简介~
格式:doc
大小:59KB
软件:Word
页数:0
分类:
上传时间:2018-09-18
浏览量:30