一、啤酒和饮料

啤酒每罐2.3元,饮料每罐1.9元。小明买了若干啤酒和饮料,一共花了82.3元。

我们还知道他买的啤酒比饮料的数量少,请你计算他买了几罐啤酒。

注意:答案是一个整数。请通过浏览器提交答案。

不要书写任何多余的内容(例如:写了饮料的数量,添加说明文字等)。

答案:

#include<iostream>
using namespace std;int main(){
for(int i=0;i<35;i++){for(int j=0;j<43;++j){if(i*2.3+j*1.9==82.3&&i<j){cout<<i;}}
}
}

二、切面条

一根高筋拉面,中间切一刀,可以得到2根面条。

如果先对折1次,中间切一刀,可以得到3根面条。

如果连续对折2次,中间切一刀,可以得到5根面条。

那么,连续对折10次,中间切一刀,会得到多少面条呢?

答案是个整数,请通过浏览器提交答案。不要填写任何多余的内容。

分析:观察得到的面条数,发现规律 f[n]=2*f[n-1]-1。因此我们可以通过循环计算出答案

分析:不需要编程,理解题意、找出规律、利用等差公式计算即可。

答案:1025

三、李白打酒

话说大诗人李白,一生好饮。幸好他从不开车。

一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱:

无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。

这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了

请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算出所有可能方案的个数(包含题目给出的)。

注意:通过浏览器提交答案。答案是个整数。不要书写任何多余的内容。

答案:

#include<iostream>
using namespace std;
int ans=0;
void f(int jiu,int shop,int flower){if(jiu<0)return; if(jiu==1&&shop==5&&flower==9)ans++;if(shop<5)f(jiu*2,shop+1,flower);if(flower<9)f(jiu-1,shop,flower+1);
}
int main(){f(2,0,0);cout<<ans;return 0;
}

注:1. 题干中要求最后一次是花,那么抛开最后一次,令花到9,就还剩一斗

2.如果不加两个if的限制,深搜会一直进行,所以要有限制,2013年真题第三题变量少且有n做限制,本题类似

四、史丰收速算--代码补充

史丰收速算法的革命性贡献是:从高位算起,预测进位。不需要九九表,彻底颠覆了传统手算!

速算的核心基础是:1位数乘以多位数的乘法。

其中,乘以7是最复杂的,就以它为例。

因为,1/7 是个循环小数:0.142857...,如果多位数超过 142857...,就要进1

同理,2/7, 3/7, ... 6/7 也都是类似的循环小数,多位数超过 n/7,就要进n

下面的程序模拟了史丰收速算法中乘以7的运算过程。

乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取个位。

乘以 7 的进位规律是:

满 142857... 进1,

满 285714... 进2,

满 428571... 进3,

满 571428... 进4,

满 714285... 进5,

满 857142... 进6

请分析程序流程,填写划线部分缺少的代码。

//计算个位
int ge_wei(int a)
{if(a % 2 == 0)return (a * 2) % 10;elsereturn (a * 2 + 5) % 10;
}//计算进位
int jin_wei(char* p)
{char* level[] = {"142857","285714","428571","571428","714285","857142"};char buf[7];buf[6] = '\0';strncpy(buf,p,6);int i;for(i=5; i>=0; i--){int r = strcmp(level[i], buf);if(r<0) return i+1;while(r==0){p += 6;strncpy(buf,p,6);//r = strcmp(level[i], buf);if(r<0) return i+1;______________________________;  //填空}}return 0;
}//多位数乘以7
void f(char* s)
{int head = jin_wei(s);if(head > 0) printf("%d", head);char* p = s;while(*p){int a = (*p-'0');int x = (ge_wei(a) + jin_wei(p+1)) % 10;printf("%d",x);p++;}printf("\n");
}int main()
{f("428571428571");f("34553834937543");        return 0;
}

答案:

#include<iostream>
#include<string.h>
using namespace std;
//计算个位
int ge_wei(int a)
{if(a % 2 == 0)return (a * 2) % 10;elsereturn (a * 2 + 5) % 10;
}//计算进位
int jin_wei(char* p)
{char* level[] = {"142857","285714","428571","571428","714285","857142"};char buf[7];buf[6] = '\0';//只有6个数,最后一位为0 strncpy(buf,p,6);int i;for(i=5; i>=0; i--){int r = strcmp(level[i], buf);//从样例的第五个开始比,level大则换更小的比if(r<0) return i+1;//level小,直接return出去,也就是进位多少 while(r==0){p += 6;strncpy(buf,p,6);r = strcmp(level[i], buf);if(r<0) return i+1;//   ______________________________;  //填空if(r<0) return i; //在while里,==0的情况不用处理,剩下的可以用样例帮忙 }}return 0;
}//多位数乘以7
void f(char* s) //s是多位数
{int head = jin_wei(s);//head是s的进位 if(head > 0) printf("%d", head);//head大于0,输出 char* p = s;//拷贝字符串指针,实际上就是拷贝字符串 while(*p){int a = (*p-'0');int x = (ge_wei(a) + jin_wei(p+1)) % 10;//个位加上下一位的进位,输出 printf("%d",x);p++;}printf("\n");
}int main()
{f("428571428571");//先看main,然后进到f里去看 f("34553834937543");        return 0;
}

分析:

1.strnspy()函数和strcmp()函数要了解

2,比较考验阅读代码的能力——要多练习

3.要养成一定的技巧,更准确的说是经验(eg:有的时候代码填空有点对称的、类似的意味)

五、打印图形--代码补充

小明在X星球的城堡中发现了如下图形和文字:

rank=3

rank=5

ran=6

小明开动脑筋,编写了如下的程序,实现该图形的打印。

#define N 70void f(char a[][N], int rank, int row, int col)
{if(rank==1){a[row][col] = '*';return;}int w = 1;int i;for(i=0; i<rank-1; i++) w *= 2;____________________________________________;f(a, rank-1, row+w/2, col);f(a, rank-1, row+w/2, col+w);
}int main()
{char a[N][N];int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++) a[i][j] = ' ';f(a,6,0,0);for(i=0; i<N; i++){for(j=0; j<N; j++) printf("%c",a[i][j]);printf("\n");}return 0;
}

答案:f(a,rank-1,row, col+w/2);

#include<iostream>
using namespace std;
#define N 70void f(char a[][N], int rank, int row, int col)
{if(rank==1){a[row][col] = '*';return;}int w = 1;int i;for(i=0; i<rank-1; i++) w *= 2;//最后一排多少个* ,w很关键 //____________________________________________;f(a,rank-1,row, col+w/2); //0,16f(a, rank-1, row+w/2, col);//16,0f(a, rank-1, row+w/2, col+w);//16,32
}int main()
{char a[N][N];//二维数组 存放画面 int i,j;for(i=0;i<N;i++)for(j=0;j<N;j++) a[i][j] = ' ';//?? 先留出位置 f(a,6,0,0);//一直到6 for(i=0; i<N; i++){for(j=0; j<N; j++) printf("%c",a[i][j]);printf("\n");//打印 }return 0;
}

六、奇怪的分式

上小学的时候,小明经常自己发明新算法。一次,老师出的题目是:

1/4 乘以 8/5

小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png)

老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼!

对于分子、分母都是 1~9 中的一位数的情况,还有哪些算式可以这样计算呢?

请写出所有不同算式的个数(包括题中举例的)。

显然,交换分子分母后,例如:4/1 乘以 5/8 是满足要求的,这算做不同的算式。

但对于分子分母相同的情况,2/2 乘以 3/3 这样的类型太多了,不在计数之列!

注意:答案是个整数(考虑对称性,肯定是偶数)。请通过浏览器提交。不要书写多余的内容。

答案:(没有完善,需要修改)

#include<iostream>
using namespace std;
int gcd(int x,int y){if(y==0)return x;return gcd(y,y%x);
}
int main()
{//cout<<gcd(12,16)<<endl;测试gcd int ans=0;for(int a=1;a<=9;++a){for(int c=1;c<=9;++c){if(c==a)continue; for(int b=1;b<=9;++b){for(int d=1;d<=9;++d){if(b%d!=0){int gcd1=gcd(a*b,c*d);int gcd2=gcd(a*10+b,c*10+d);if((a*b/gcd1==(a*10+b)/gcd2)&&c*d/gcd1==(a*10+b)/gcd2){ans++;}}    }}}}cout<<ans<<endl;return 0;
}

七、六角填数

如图所示六角形中,填入1~12的数字。

使得每条直线上的数字之和都相同。

图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少?

请通过浏览器提交答案,不要填写多余的内容。

八、蚂蚁感冒--编写代码

长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。

每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。

当两只蚂蚁碰面时,它们会同时掉头往相反的方向爬行。

这些蚂蚁中,有1只蚂蚁感冒了。并且在和其它蚂蚁碰面时,会把感冒传染给碰到的蚂蚁。

请你计算,当所有蚂蚁都爬离杆子时,有多少只蚂蚁患上了感冒。

【数据格式】

第一行输入一个整数n (1 < n < 50), 表示蚂蚁的总数。

接着的一行是n个用空格分开的整数 Xi (-100 < Xi < 100), Xi的绝对值,表示蚂蚁离开杆子左边端点的距离。正值表示头朝右,负值表示头朝左,数据中不会出现0值,也不会出现两只蚂蚁占用同一位置。其中,第一个数据代表的蚂蚁感冒了。

要求输出1个整数,表示最后感冒蚂蚁的数目。

例如,输入: 3 5 -2 8 程序应输出: 1

再例如,输入: 5 -10 8 -20 12 25 程序应输出: 3

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

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

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

注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。 注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

九、地宫取宝--编写代码

X 国王有一个地宫宝库。是 n x m 个格子的矩阵。每个格子放一件宝贝。每个宝贝贴着价值标签。

地宫的入口在左上角,出口在右下角。

小明被带到地宫的入口,国王要求他只能向右或向下行走。

走过某个格子时,如果那个格子中的宝贝价值比小明手中任意宝贝价值都大,小明就可以拿起它(当然,也可以不拿)。

当小明走到出口时,如果他手中的宝贝恰好是k件,则这些宝贝就可以送给小明。

请你帮小明算一算,在给定的局面下,他有多少种不同的行动方案能获得这k件宝贝。

【数据格式】

输入一行3个整数,用空格分开:n m k (1<=n,m<=50, 1<=k<=12)

接下来有 n 行数据,每行有 m 个整数 Ci (0<=Ci<=12)代表这个格子上的宝物的价值

要求输出一个整数,表示正好取k个宝贝的行动方案数。该数字可能很大,输出它对 1000000007 取模的结果。

例如,输入: 2 2 2 1 2 2 1 程序应该输出: 2

再例如,输入: 2 3 2 1 2 3 2 1 5 程序应该输出: 14

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

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

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

注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。 注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

十、小朋友排队--编写代码

n 个小朋友站成一排。现在要把他们按身高从低到高的顺序排列,但是每次只能交换位置相邻的两个小朋友。

每个小朋友都有一个不高兴的程度。开始的时候,所有小朋友的不高兴程度都是0。

如果某个小朋友第一次被要求交换,则他的不高兴程度增加1,如果第二次要求他交换,则他的不高兴程度增加2(即不高兴程度为3),依次类推。当要求某个小朋友第k次交换时,他的不高兴程度增加k。

请问,要让所有小朋友按从低到高排队,他们的不高兴程度之和最小是多少。

如果有两个小朋友身高一样,则他们谁站在谁前面是没有关系的。

【数据格式】

输入的第一行包含一个整数n,表示小朋友的个数。 第二行包含 n 个整数 H1 H2 … Hn,分别表示每个小朋友的身高。 输出一行,包含一个整数,表示小朋友的不高兴程度和的最小值。

例如,输入: 3 3 2 1 程序应该输出: 9

【样例说明】 首先交换身高为3和2的小朋友,再交换身高为3和1的小朋友,再交换身高为2和1的小朋友,每个小朋友的不高兴程度都是3,总和为9。

【数据规模与约定】 对于10%的数据, 1<=n<=10; 对于30%的数据, 1<=n<=1000; 对于50%的数据, 1<=n<=10000; 对于100%的数据,1<=n<=100000,0<=Hi<=1000000。

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

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

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

注意: main函数需要返回0 注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。 注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。

提交时,注意选择所期望的编译器类型。

2014年蓝桥杯c/c++B组省赛真题解析相关推荐

  1. 2020年 第11届 蓝桥杯 C/C++ B组 省赛真题详解及小结【第1场省赛2020.7.5】【Java版】

    蓝桥杯 Java B组 省赛真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 注意:部分代码及程序 源自 蓝桥杯 官网视频(历年真题解析) 郑未老师. 2013年 第04届 蓝桥杯 ...

  2. 蓝桥杯Java大学C组近三年真题解析(三)——暴力、模拟题

    目录 第十届 求和 题目 题解 代码 矩形切割 题目 题解一 代码 代码 代码 题解二 代码 不同子串 题目 题解 代码 质数 题目 题解 代码 最大降雨量 题目 题解 代码 旋转 题目 题解 代码 ...

  3. 蓝桥杯Java大学C组近三年真题解析(二)——暴力、模拟题

    目录 第十一届 约数个数 题目 题解 代码 代码 寻找 2020 题目 题解 代码 代码 跑步锻炼 题目 题解 代码 代码 代码 灵活使用Excel 平面分割 题目 题解 代码 代码 七段码 题目 ​ ...

  4. 【蓝桥杯Web】2022年第十三届蓝桥杯Web大学组国赛真题解析

    前言 省赛真题解析见: 2022年第十三届蓝桥杯Web大学组省赛真题解析(完整版) 2022年第十三届蓝桥杯Web大学组省赛真题解析(精华版) 更多蓝桥杯题解请查阅专栏:蓝桥杯 之前写省赛解析时篇幅过 ...

  5. 蓝桥杯嵌入式第十届省赛真题

    蓝桥杯嵌入式第十届省赛真题 文章目录 蓝桥杯嵌入式第十届省赛真题 1.题目分析 2.项目结构 2.1数组思路 2.2Key_Flag控制对应逻辑 2.3KEY控制操作 1.题目分析 总的来说这题考点特 ...

  6. 【蓝桥杯单片机第十二届国赛真题】

    [蓝桥杯单片机第十二届国赛真题] 文章目录 [蓝桥杯单片机第十二届国赛真题] 前言 一.真题 二.源码 前言 有幸进入国赛,为自己大学最后一个比赛画上完满的句号^@^ 下面为蓝桥杯单片机第十二届国赛程 ...

  7. 2022年第十三届蓝桥杯比赛Java B组 【全部真题答案解析-第一部分】

    最近回顾了Java B组的试题,深有感触:脑子长时间不用会锈住,很可怕. 兄弟们,都给我从被窝里爬起来,赶紧开始卷!!! 2022年第十三届蓝桥杯Java B组(第一部分 A~F题) 目录 一.填空题 ...

  8. [蓝桥杯]2018年第九届省赛真题C/C++ B组 填空+大题

    第九届蓝桥杯省赛题目 填空A:第几天 填空B:明码 填空C:乘积尾零 填空 D: 测试次数(待学习) 填空 E:快速排序 大题F:递增三元组 大题G: 螺旋折线 大题H:日志统计 大题I-全球变暖 填 ...

  9. [蓝桥杯]2020年第十一届省赛真题C/C++ B组(七月)

    第十一届蓝桥杯省赛题目 试题A: 跑步训练 试题B: 纪念日 试题C: 合并检测 试题D: REPEAT 程序 试题E: 矩阵 试题F: 整除序列 试题G: 解码 试题H: 走方格 试题I:整数拼接 ...

最新文章

  1. Varnish Cache 3.0.0安装
  2. 基于Hadoop的MapReduce框架研究报告
  3. vbn中使用的3种流程控制结构是_细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定...
  4. DOxygen for C++使用说明——添加数学公式
  5. 云计算构建基石之Hyper-V:虚拟机管理
  6. 查看Oracle实例的EM端口
  7. [20160229]探究oracle的启动过程.txt
  8. LaTeX tikz初探——利用emoji画GPS卫星2D分布图(2)
  9. [转]vs2008 + OpenCV-2.1.0-win32-vs2008安装
  10. Glide4.0源码全解析(一),GlideAPP和.with()方法背后的故事
  11. C语言中scanf()的用法
  12. hdu-acm steps Common Subsequence
  13. 浏览器自动打开html怎么办,浏览器自动弹出网页怎么处理?开机自动弹出垃圾网页如何解决?...
  14. 华盛顿大学贪玩挂科GPA成绩找谁改
  15. android-第一行代码-第六章数据储存——持久化技术 含MMKV和Room新知识点(温故而知新)学习记录
  16. 家庭数据中心-私有云服务器定义和选择
  17. 配置MyBatis Plus 的乐观锁功能
  18. python读取csv文件‘gbk‘ codec can‘t decode byte 0xbf in position 2: illegal multibyte sequence
  19. Ubuntu:一些普通软件的安装与卸载
  20. SEO可以分为5个层次

热门文章

  1. 绘制简单封闭图形并且进行填充
  2. 英语口语练习四十七之幸福满满的词语
  3. 【转】“百度被黑” 分析师认为不亚于制造“911事件”
  4. 张坤 2012.5.4 sed去掉所有的HTML标签
  5. 用java将数组中的数字倒过来_有数组a[n],用java 代码将数组元素顺序颠倒
  6. Python中既有列表,何必再有数组(NumPy‘s ndarray)?
  7. Cocos Creator 一步一步实现重力球游戏
  8. 单通道与双通道 RAM:哪个更适合游戏?
  9. 最近有感,试试微信公众号与博客互相推广
  10. rh5885v3服务器查看配置信息,rh5885 v3 服务器配置