2016年第七届蓝桥杯省赛C组试题

欢迎加入编程学习交流QQ群:23228338 群文件有答案参考


第一题

 

报纸页数


X
星球日报和我们地球的城市早报是一样的,
都是一些单独的纸张叠在一起而已。每张纸印有4版。


比如,某张报纸包含的4页是:5,6,11,12
可以确定它应该是最上边的第2张报纸。


我们在太空中捡到了一张X星球的报纸,4个页码分别是:
1125,1126,1727,1728


请你计算这份报纸一共多少页(也就是最大页码,并不是用了几张纸哦)?


请填写表示总页数的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

 

 

第二题
煤球数目

有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
....

如果一共有100层,共有多少个煤球?


请填表示煤球总数目的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

 

3.


平方怪圈


如果把一个正整数的每一位都平方后再求和,得到一个新的正整数。
对新产生的正整数再做同样的处理。


如此一来,你会发现,不管开始取的是什么数字,
最终如果不是落入1,就是落入同一个循环圈。


请写出这个循环圈中最大的那个数字。


请填写该最大数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

 

4.
打印方格

11

小明想在控制台上输出 m x n个方格。
比如 10x4的,输出的样子是:
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+


(如果显示有问题,可以参见【图1.jpg】)


以下是小明写的程序,请你分析其流程,填写划线部分缺少的代码。




#include <stdio.h>


//
打印m列,n行的方格 
void f(int m, int n)
{
int row;
int col;

for(row=0; row<n; row++){
for(col=0; col<m; col++) printf("+---");
printf("+\n");
for(col=0; col<m; col++) printf("| ");
printf("|\n");
}

printf("+");
_____________________________; //
填空
printf("\n");
}


int main()
{
f(10,4);
return 0;
}


注意:仅仅填写划线部分缺少的内容,不要添加任何已有内容或说明性文字。

 

 

5
13

快速排序


排序在各种场合经常被用到。
快速排序是十分常用的高效率的算法。


其思想是:先选一个标尺
用它把整个队列过一遍筛子,
以保证:其左边的元素都不大于它,其右边的元素都不小于它。


这样,排序问题就被分割为两个子区间。
再分别对子区间排序就可以了。


下面的代码是一种实现,请分析并填写划线部分缺少的代码。




#include <stdio.h>



void swap(int a[], int i, int j)
{
int t = a[i];
a[i] = a[j];
a[j] = t;
}


int partition(int a[], int p, int r)
{
int i = p;
int j = r + 1;
int x = a[p];
while(1){
while(i<r && a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
swap(a,i,j);
}
______________________;
return j;
}


void quicksort(int a[], int p, int r)
{
if(p<r){
int q = partition(a,p,r);
quicksort(a,p,q-1);
quicksort(a,q+1,r);
}
}

int main()
{
int i;
int a[] = {5,13,6,24,2,8,19,27,6,12,1,17};
int N = 12;

quicksort(a, 0, N-1);

for(i=0; i<N; i++) printf("%d ",a[i]);
printf("\n");

return 0;
}




注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。

 

6.
15

凑算式



B DEF

A + --- + ------- = 10
C GHI

(如果显示有问题,可以参见【图1.jpg】)


这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。


比如:
6+8/3+952/714
就是一种解法,
5+3/1+972/486
是另一种解法。


这个算式一共有多少种解法?


注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

 

7
19

寒假作业



现在小学的数学题目也不是那么好玩的。
看看这个寒假作业:


□ + □ = □
□ - □ = □
□ × □ = □
□ ÷ □ = □

(
如果显示不出来,可以参见【图1.jpg)

每个方块代表1~13中的某一个数字,但不能重复。
比如:


6 + 7 = 13


9 - 8 = 1 3 * 4 = 12


10 / 2 = 5
以及:


7 + 6 = 13


9 - 8 = 1

3 * 4 = 12

10 / 2 = 5
就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?




请填写表示方案数目的整数。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。

 

 

8
21

冰雹数


任意给定一个正整数N
如果是偶数,执行: N / 2
如果是奇数,执行: N * 3 + 1


生成的新的数字再执行同样的动作,循环往复。


通过观察发现,这个数字会一会儿上升到很高,
一会儿又降落下来。
就这样起起落落的,但最终必会落到“1”
这有点像小冰雹粒子在冰雹云中翻滚增长的样子。


比如N=9
9,28,14,7,22,11,34,17,52,26,13,40,20,10,5,16,8,4,2,1

可以看到,N=9的时候,这个小冰雹最高冲到了52这个高度。


输入格式:
一个正整数NN<1000000
输出格式:
一个正整数,表示不大于N的数字,经过冰雹数变换过程中,最高冲到了多少。


例如,输入:
10

程序应该输出:
52



再例如,输入:
100

程序应该输出:
9232

 

 

 

9
25

卡片换位


你玩过华容道的游戏吗?
这是个类似的,但更简单的游戏。
看下面 3 x 2 的格子


+---+---+---+
| A | * | * |
+---+---+---+
| B | | * |
+---+---+---+


在其中放5张牌,其中A代表关羽,B代表张飞,*代表士兵。
还有一个格子是空着的。


你可以把一张牌移动到相邻的空格中去(对角不算相邻)
游戏的目标是:关羽和张飞交换位置,其它的牌随便在哪里都可以。


输入格式:
输入两行6个字符表示当前的局面


输出格式:
一个整数,表示最少多少步,才能把AB换位(其它牌位置随意)


例如,输入:
* A
**B


程序应该输出:
17


再例如,输入:
A B
***


程序应该输出:
12




资源约定:
峰值内存消耗 < 256M
CPU
消耗 < 1000ms


请严格按要求输出,不要画蛇添足地打印类似:请您输入...”的多余内容。


所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。


注意: main函数需要返回0

 

 

 

10. 滚雪球

 

输入一个正整数,如果是偶数,则除以2,奇数则乘以三再加1
你会发现,数字波动很大,一下很大,一下很小,不过不管输入什么数,最终都会滚成1
然后求在滚雪球时候最大的数

给的示例:输入9
9  28  14  7   22  11  34  17  52  26  13  

40   20  10   5   16   8  4  2  1

输出:52

示例:输入100输出9232

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值