第七届蓝桥杯C语言C组-(自己懂的题目)


表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结,
先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级。。。


第一题
报纸页数

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

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

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

请你计算这份报纸一共多少页(也就是最大页码,并不是用了几张纸哦)?
请填写表示总页数的数字。
注意:你提交的应该是一个整数,不要填写任何多余的内容或说明性文字。
这道题我没填,说实话,没看懂,没看过报纸的孩纸
不会。。
贴吧说的。。。

1125+1126+1727+1728=1+2+X,X等于5703,5703等于2851+2852

第二题
煤球数目

有一堆煤球,堆成三角棱锥形。具体:
第一层放1个,
第二层3个(排列成三角形),
第三层6个(排列成三角形),
第四层10个(排列成三角形),
….
如果一共有100层,共有多少个煤球?

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

#include<cstdio>
#include<iostream>
using namespace std;
int getInt(int n) {int n1 = 1;int sum = n1;for (int i = 2; i <= n; i++) {sum = i + n1;n1 = sum;}return sum;
}
int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += getInt(i);}cout << sum << endl;return 0;
}

我当时填的5050,计算的是第100层。。 题目要求的是100层总共多少。
答案171700


第三题
平方怪圈

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

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

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

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char s[100];
int getInt(char *s) {int sum = 0;int len = strlen(s);for (int i = 0; i < len; i++) {sum += (s[i]-'0')*(s[i]-'0');}return sum;
}
int main() {int num = 3;int MAX = 0;for (int i = 0; i < 100; i++) {sprintf(s, "%d", num);num = getInt(s);MAX = max(MAX, num);}cout << MAX << endl;return 0;
}

答案145 有一些是1,可以打印出来


第四题
打印方格
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;
}

注意:仅仅填写划线部分缺少的内容,不要添加任何已有内容或说明性文字。
for循环即可,反正我是这样写的

for(col=0; col<m; col++) printf("---+");
//或者
for(row=0; row<m; row++) printf("---+");

第五题
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;
}

答案是swap(a,p,j)


第六题
6.
15分
凑算式

B DEF
A + — + ——- = 10
C GHI

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

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

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

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

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


记住要通分,不要fabs(…) < 1E10 这样来进行约等于
dfs思路

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a1[9], book[9], COUNT = 0;
bool getSum(int *a) {int A = a[0], B = a[1], C = a[2];int DEF = a[3]*100+a[4]*10+a[5], GHI = a[6]*100+a[7]*10+a[8];if ((B*GHI+DEF*C)%(C*GHI) != 0) return false;if (A+(B*GHI+DEF*C)/(C*GHI) == 10) return true;return false;
}
void dfs(int step) {if (step == 9) {if (getSum(a1)) COUNT++;return;}for (int i = 0; i < 9; i++) {if (book[i] == 0) {book[i] = 1;a1[step] = i+1;dfs(step+1);book[i] = 0;}}
}
int main() {dfs(0);cout << COUNT << endl;return 0;
}

答案29


第七题
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
就算两种解法。(加法,乘法交换律后算不同的方案)

你一共找到了多少种方案?
还是dfs思路

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a1[13], book[13], COUNT = 0;
bool getSum(int *a) {if (a[9]%a[10] != 0) return false;return (a[0]+a[1] == a[2] &&a[3]-a[4] == a[5] &&a[6]*a[7] == a[8] &&a[9]/a[10] == a[11]  );
}
void dfs(int step) {if (step == 13) {if (getSum(a1)) COUNT++;return;}for (int i = 0; i < 13; i++) {if (book[i] == 0) {book[i] = 1;a1[step] = i+1;dfs(step+1);book[i] = 0;}}
}
int main() {dfs(0);cout << COUNT << endl;return 0;
}

大概运行了5分钟。。
答案64
如果有好的解法,请告诉我,本人水平有限。嘿嘿


第八题
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这个高度。

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

例如,输入:
10
程序应该输出:
52

再例如,输入:
100
程序应该输出:
9232

相信很多童鞋被这道题给坑了。。。 哈哈哈,请看清题意
一个正整数,表示不大于N的数字
好吧,是后面往前面推,在考场我不到五分钟写好代码。。。 然后跪了。。
错误代码

#include<cstdio>
#include<iostream>
using namespace std;
int getInt(int N) {if (N%2 == 0) return N/2;return N*3+1;
}
int main() {int N;scanf("%d", &N);int MAX = N;while(N != 1) {N = getInt(N);MAX = max(MAX, N);}cout << MAX << endl;return 0;
}

写完之后,感觉么么哒。。。
然后一测数据,感觉不对劲,是不是题目测试数据给错了,到了快交卷,我还是以为是测试数据错了。。
其实是我理解题意错了。
正确代码

#include<cstdio>
#include<iostream>
using namespace std;
int getInt(int N) {if (N%2 == 0) return N/2;return N*3+1;
}
int main() {int N, MAX, M;scanf("%d", &N);MAX = N;for (int i = N; i >= 1; i--) {M = i;while(M != 1) {M = getInt(M);MAX = max(MAX, M);}}cout << MAX << endl;return 0;
}

如果输入的数大于122222就会超时。。
水一部分数据吧。


第九题
25

卡片换位

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

+—+—+—+
| A | * | * |
+—+—+—+
| B | | * |
+—+—+—+

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

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

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

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

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


记忆化搜索
不会。。


第十道
密码脱落

X星球的考古学家发现了一批古代留下来的密码。
这些密码是由A、B、C、D 四种植物的种子串成的序列。
仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串)。
由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征。

你的任务是:
给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子。

输入一行,表示现在看到的密码串(长度不大于1000)
要求输出一个正整数,表示至少脱落了多少个种子。

例如,输入:
ABCBA
则程序应该输出:
0

再例如,输入:
ABECDCBABC
则程序应该输出:
3

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

请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。
听大神说动态规划
不会。。。


第七届蓝桥杯C语言C组-(自己懂的题目)相关推荐

  1. 蓝桥杯7届c语言 c组答案,第七届蓝桥杯C语言C组-(自己懂的题目)

    第七届蓝桥杯C语言C组-(自己懂的题目) 表示刚刚查了成绩,省赛一等奖,有资格去北京了,然后写一下总结, 先来写一下我懂的题目,毕竟我也是菜鸟,听说国赛比预赛难几个等级... 第一题 报纸页数 X星球 ...

  2. 生日蜡烛——第七届蓝桥杯C语言B组(省赛)第二题

    原创 生日蜡烛 某君从某年开始每年都举办一次生日party,并且每次都要吹熄与年龄相同根数的蜡烛. 现在算起来,他一共吹熄了236根蜡烛. 请问,他从多少岁开始过生日party的? 请填写他开始过生日 ...

  3. 数组三元数c语言程序,递增三元数组——第九届蓝桥杯C语言B组(省赛)第六题...

    原创 标题:递增三元组 给定三个整数数组 A = [A1, A2, ... AN], B = [B1, B2, ... BN], C = [C1, C2, ... CN], 请你统计有多少个三元组(i ...

  4. 第十届蓝桥杯C语言B组题解

    由于某些(怕)原(打)因(脸),一直题解一直拖着没写,昨天蓝桥杯获奖名单下来了,就准备过来码一下题解. 看看了自己的排名,还可以广东省前15名,相比去年的前100名又提升了几名. 试题 A: 组队 本 ...

  5. java蓝桥杯dfs_第七届 蓝桥杯决赛 Java B组 打靶 解题报告(DFS,回溯,全排列)-Go语言中文社区...

    题目: 打靶 小明参加X星球的打靶比赛. 比赛使用电子感应计分系统.其中有一局,小明得了96分. 这局小明共打了6发子弹,没有脱靶. 但望远镜看过去,只有3个弹孔. 显然,有些子弹准确地穿过了前边的弹 ...

  6. 明码(蛇皮解法)——第九届蓝桥杯C语言B组(省赛)第二题

    先来个注意事项:所用算法基于C++语言(C不支持我也很无奈╮(╯▽╰)╭) 太长不看请直接跳到标题0x03 (:з」∠) 0x00 综述 解法灵感来源于以前写DES算法(一种加密算法)的时候参考的别人 ...

  7. 第十届蓝桥杯c语言b组试题,2019年第十届蓝桥杯(决赛)国赛B组C++(B)

    题目: 2019可以被分解成若干个两两不同的素数,请问不同的分解方案有多少种? 注意:分解方案不考虑顺序,如2+2017=2019和2017+2=2019属于同一种方案. 思路先求出2019内的所有素 ...

  8. 第七届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)

    目录 A.有奖猜谜 B.煤球数目 C.平方怪圈 D.骰子游戏 E.分小组 F.凑算式 G.搭积木 H.冰雹数 I.四平方和 J.密码脱落 A.有奖猜谜 小明很喜欢猜谜语. 最近,他被邀请参加了X星球的 ...

  9. 2016年第七届蓝桥杯C/C++ B组国赛 —— 第三题:棋子换位

    棋子换位 有n个棋子A,n个棋子B,在棋盘上排成一行. 它们中间隔着一个空位,用"."表示,比如: AAA.BBB 现在需要所有的A棋子和B棋子交换位置. 移动棋子的规则是: A棋 ...

最新文章

  1. Kafka面试题及答案整理 110道 (持续更新)
  2. 美多商城之用户注册(用户注册业务实现)
  3. 互联网大厂面试,谈索引就直逼这些底层?难的是我不懂这些原理
  4. ICCV 2021 Oral | 无需法向的大场景点云表面重建
  5. 反码求和校验: 一个数加上自己取反得到的数正是时钟轮盘上最大那个数
  6. Qt Creator浏览ISO 7000图标
  7. html 页间传送数据,js 不同页面间传递值并取值,html不同页面间数据传递
  8. 分块的单点修改查询区间和_模版 单点修改,区间查询
  9. 记录一下postman汉化踩过的坑
  10. FIORI静态磁贴配置
  11. 了解 云原生 和 边缘计算
  12. 给定一个年月日,计算那天是星期几(数学)
  13. 5g的八大关键指标_【一起学5G】_5G NR关键性能KPI指标
  14. SAS数据步与过程步,数据步语句
  15. 实时操作系统在生活中应用举例
  16. 菜鸟学习JSP之第6章-servlet
  17. C语言头文件和源文件差异,#include两种引用方式差异
  18. 查看android系统版本号
  19. 读扩散和写扩散的理解
  20. 标准差分进化算法(DE)

热门文章

  1. RJ45数据连接器行业现状调研及趋势分析报告
  2. 6月15到8月5日工作总结
  3. Struts2.x 学习笔记 之 国际化
  4. “体育游戏第一股”投资未来,望尘科技走向价值兑现周期
  5. IBM LSF解决方案客户案例—— EDA三巨头之 Mentor Graphics(明导)
  6. shell if 小数 比较
  7. 5G,一场商业噱头 or 一次技术革命?
  8. 什麼是 The Candle Problem
  9. 昨天的实况以及忽悠姐妹花
  10. 黑马JAVA P85-87 ATM完整版