备战蓝桥杯决赛题附答案 很用心收集的.docx

上传人:b****2 文档编号:23080482 上传时间:2023-04-30 格式:DOCX 页数:16 大小:20.86KB
下载 相关 举报
备战蓝桥杯决赛题附答案 很用心收集的.docx_第1页
第1页 / 共16页
备战蓝桥杯决赛题附答案 很用心收集的.docx_第2页
第2页 / 共16页
备战蓝桥杯决赛题附答案 很用心收集的.docx_第3页
第3页 / 共16页
备战蓝桥杯决赛题附答案 很用心收集的.docx_第4页
第4页 / 共16页
备战蓝桥杯决赛题附答案 很用心收集的.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

备战蓝桥杯决赛题附答案 很用心收集的.docx

《备战蓝桥杯决赛题附答案 很用心收集的.docx》由会员分享,可在线阅读,更多相关《备战蓝桥杯决赛题附答案 很用心收集的.docx(16页珍藏版)》请在冰豆网上搜索。

备战蓝桥杯决赛题附答案 很用心收集的.docx

备战蓝桥杯决赛题附答案很用心收集的

2011年暑假蓝桥杯决赛题附答案

1.四方定理

数论中有著名的四方定理:

所有自然数至多只要用四个数的平方和就可以表示。

我们可以通过计算机验证其在有限范围的正确性。

对于大数,简单的循环嵌套是不适宜的。

下面的代码给出了一种分解方案。

请仔细阅读,填写空缺的代码(下划线部分)。

注意:

请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

intf(intn,inta[],intidx)

{

if(______________)return1;//填空1

if(idx==4)return0;

for(inti=(int)sqrt(n);i>=1;i--)

{

a[idx]=i;

if(_______________________)return1;//填空2

}

return0;

}

intmain(intargc,char*argv[])

{

for(;;)

{

intnumber;

printf("输入整数(1~10亿):

");

scanf("%d",&number);

inta[]={0,0,0,0};

intr=f(number,a,0);

printf("%d:

%d%d%d%d\n",r,a[0],a[1],a[2],a[3]);

}

return0;

}

 

2.加密

在对文本进行简单加密的时候,可以选择用一个n位的二进制数,对原文进行异或运算。

解密的方法就是再执行一次同样的操作。

加密过程中n位二进制数会循环使用。

并且其长度也可能不是8的整数倍。

下面的代码演示了如何实现该功能。

 

请仔细阅读,填写空缺的代码(下划线部分)。

注意:

请把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。

直接写在题面中不能得分。

 

voidf(char*buf,unsignedchar*uckey,intn)

{

inti;

for(i=0;i

buf[i]=buf[i]^uckey[i];

}

intmain(intargc,char*argv[])

{

charp[]="abcd中国人123";//待加密串

char*key="11001100010001110";//以串的形式表达的密匙,运算时要转换为按位存储的形式。

intnp=strlen(p);

intnk=strlen(key);

unsignedchar*uckey=(unsignedchar*)malloc(np);

//密匙串需要按位的形式循环拼入uckey中

inti;

for(i=0;i

{

if(key[i%nk]=='1')

____________________________________________;//填空1

else

____________________________________________;//填空2

}

f(p,uckey,strlen(p));

f(p,uckey,strlen(p));

printf("%s\n",p);

free(uckey);

return0;

}

3.公倍数

为什么1小时有60分钟,而不是100分钟呢?

这是历史上的习惯导致。

但也并非纯粹的偶然:

60是个优秀的数字,它的因子比较多。

事实上,它是1至6的每个数字的倍数。

即1,2,3,4,5,6都是可以除尽60。

我们希望寻找到能除尽1至n的的每个数字的最小整数。

不要小看这个数字,它可能十分大,比如n=100,则该数为:

69720375229712477164533808935312303556800

请编写程序,实现对用户输入的n(n<100)求出1~n的最小公倍数。

例如:

用户输入:

6

程序输出:

60

用户输入:

10

程序输出:

2520

要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSIC标准,不能使用c++特性;

不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

 

4.地铁换乘

为解决交通难题,某城市修建了若干条交错的地铁线路,线路名及其所属站名如stations.txt所示。

线1

苹果园

....

四惠东

线2

西直门

车公庄

....

建国门

线4

....

其中第一行数据为地铁线名,接下来是该线的站名。

当遇到空行时,本线路站名结束。

下一行开始又是一条新线....直到数据结束。

 

如果多条线拥有同一个站名,表明:

这些线间可以在该站换车。

为引导旅客合理利用线路资源,解决交通瓶颈问题,该城市制定了票价策略:

1.每条线路可以单独购票,票价不等。

2.允许购买某些两条可换乘的线路的联票。

联票价格低于分别购票。

单线票价和联合票价如price.txt所示。

线1180

.....

线13114

线1,线2350

线1,线10390

.....

 

每行数据表示一种票价

线名与票价间用空格分开。

如果是联票,线名间用逗号分开。

联票只能包含两条可换乘的线路。

现在的问题是:

根据这些已知的数据,计算从A站到B站最小花费和可行的换乘方案。

比如,对于本题目给出的示例数据

如果用户输入:

五棵松,奥体中心

程序应该输出:

-(线1,线10)-线8=565

如果用户输入:

五棵松,霍营

程序应该输出:

-线1-(线4,线13)=440

可以看出,用户输入的数据是:

起始站,终到站,用逗号分开。

程序输出了购票方案,在括号中的表示联票,短横线(-)用来分开乘车次序。

等号后输出的是该方案的花费数值。

 

请编程解决上述问题。

注意:

1.我们测试您的程序时,所用数据与题目中的示例数据不同,但格式完全一样。

2.当多个方案有相同的最小花费,输出任意一个方案即可。

 

要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSIC标准,不能使用c++特性;

不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

 

文件price.txt内容如下:

线1180

线2250

线4160

线5270

线8175

线10226

线13114

线1,线2350

线1,线10390

线1,线5410

线1,线4330

线10,线13310

线2,线5390

线4,线10370

线4,线13260

文件station.txt内容如下:

线1

苹果园

古城路

八角游乐园

八宝山

玉泉路

五棵松

万寿路

公主坟

军事博物馆

木樨地

南礼士路

复兴门

西单

天安门西

天安门东

王府井

东单

建国门

永安里

国贸

大望路

四惠

四惠东

线2

西直门

车公庄

阜成门

复兴门

长椿街

宣武门

和平门

前门

崇文门

北京站

建国门

朝阳门

东四十条

东直门

雍和宫

安定门

鼓楼大街

积水潭

线4

公益西桥

角门西

马家堡

北京南站

陶然亭

菜市口

宣武门

西单

灵境胡同

西四

平安里

新街口

西直门

动物园

国家图书馆

魏公村

人民大学

海淀黄庄

中关村

北京大学东门

圆明园

西苑

北宫门

安河桥北

线5

天通苑北

天通苑

天通苑南

立水桥

立水桥南

北苑路北

大屯路东

惠新西街北口

惠新西街南口

和平西桥

和平里北街

雍和宫

北新桥

张自忠路

东四

灯市口

东单

崇文门

磁器口

天坛东门

蒲黄榆

刘家窑

宋家庄

线8

森林公园南门

奥林匹克公园

奥体中心

北土城

线10

巴沟

苏州街

海淀黄庄

知春里

知春路

西土城

牡丹园

健德门

北土城

安贞门

惠新西街南口

芍药居

太阳宫

三元桥

亮马桥

农业展览馆

团结湖

呼家楼

金台夕照

国贸

双井

劲松

线13

西直门

大钟寺

知春路

五道口

上地

西二旗

龙泽

回龙观

霍营

立水桥

北苑

望京西

芍药居

光熙门

柳芳

东直门

5.连通问题

in.bmp文件如下:

t1.bmp文件如下:

BMP是常见的图像存储格式。

如果用来存黑白图像(颜色深度=1),则其信息比较容易读取。

与之相关的数据:

(以下偏移均是从文件头开始)

偏移:

10字节,长度4字节:

图像数据真正开始的位置。

偏移:

18字节,长度4字节:

位图的宽度,单位是像素。

偏移:

22字节,长度4字节:

位图的高度,单位是像素。

从图像数据开始处,每个像素用1个二进制位表示。

从图片的底行开始,一行一行向上存储。

Windows规定图像文件中一个扫描行所占的字节数必须是4字节的倍数,

不足的位均以0填充。

例如,图片宽度为45像素,实际上每行会占用

8个字节。

可以通过Windows自带的画图工具生成和编辑二进制图像。

需要在“属性”中选择“黑白”,指定为二值图像。

可能需要通过查看|缩放|自定义...把图像变大比例一些,

更易于操作。

图像的左下角为图像数据的开始位置。

白色对应1,黑色对应0

我们可以定义:

两个点距离如果小于2个像素,则认为这两个点连通。

也就是说:

以一个点为中心的九宫格中,围绕它的8个点与它都是连通的。

如:

t1.bmp所示,左下角的点组成一个连通的群体;

而右上角的点都是孤立的。

程序的目标是:

根据给定的黑白位图,分析出所有独立连通的群体,

输出每个连通群体的面积。

所谓面积,就是它含有的像素的个数。

输入数据固定存在in.bmp中。

如示例的in.bmp,

程序应该输出:

12

81

52

133

该输出表示:

共有4个连通群体。

输出的连通体面积间的顺序可以随意。

请编程解决上述问题。

我们测试程序的时候,会使用不同的in.bmp文件。

 

要求考生把所有函数写在一个文件中。

调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。

相关的工程文件不要拷入。

对于编程题目,要求选手给出的解答完全符合ANSIC标准,不能使用c++特性;

不能使用诸如绘图、中断调用等硬件相关或操作系统相关的API。

 

答案:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1