2017年蓝桥杯省赛赛前集训题(共14题)_第1页
2017年蓝桥杯省赛赛前集训题(共14题)_第2页
2017年蓝桥杯省赛赛前集训题(共14题)_第3页
2017年蓝桥杯省赛赛前集训题(共14题)_第4页
2017年蓝桥杯省赛赛前集训题(共14题)_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1 第 1 题:星系炸弹(2015 年省赛 C/C+B 组第 2 题) 在 X 星系的广袤空间中漂浮着许多 X 星人造“炸弹 ”,用来作为宇宙中的路标。 每个炸弹都可以设定多少天之后爆炸。 比如:阿尔法炸弹 2015 年 1 月 1 日放置,定时为 15 天,则它在 2015 年 1 月 16 日爆炸。 有一个贝塔炸弹,2014 年 11 月 9 日放置,定时为 1000 天,请你计算它爆炸的准确日期。 请填写该日期,格式为 yyyy-mm-dd 即 4 位年份 2 位月份 2 位日期。比如:2015-02-19 请严格按照格式书写。不能出现其它文字或符号。 结果:2017-08-05 解决方法:用 Excel 拖 这个题会了的同学们把上课讲过的,课件上的,其他几道 Excel 拖动题都做一遍。 第 2 题:(2015 年校内选拔赛 C/C+B 组第 3 题) 如果 x 的 x 次幂结果为 10(参见【图 1.png】 ) ,你能计算出 x 的近似值吗? 显然,这个值是介于 2 和 3 之间的一个数字。 请把 x 的值计算到小数后 6 位(四舍五入) ,并填写这个小数值。 注意:只填写一个小数,不要写任何多余的符号或说明。 #include #include 2 #include using namespace std; int main() double x; for(x=2;x #include using namespace std; int main() int p15=1,1,1,1,1,2,2,2,2,2,2,2,2,2,2;/1 是店, 2 是花 int sum,cnt=0; do sum=2; for(int i=0;i using namespace std; #define N 14/因为最后一次肯定是花,所以只排 14 个数 int cnt; bool ok(int p,int begin,int end) for (int i = begin; i #include using namespace std; int main() string s = “aaaaabbbbbbbbb“;/a 是店,b 是花 int sum,cnt=0; do sum=2; for(int i=0;i 5 using namespace std; int cnt=0; void f(int a,int b,int c)/a 个店,b 朵花,c 升酒 if(a5|b9) return; f(a+1,b,c*2); f(a,b+1,c-1); if(a=5 int main() f(0,0,2); cout using namespace std; #define N 5 int main() int i,j,t,aN; for (i = 0x10; i 0; i=1) t=i; for (j = N-1; j = 0; j-) aj = t t=1; 6 /ABCDE5 个变量存 5 个人的真假话状态, 1 为真话,0 为假话 int A=(a0+a4=0);/A :我和 E 都没有扶老奶奶 int B=(a2+a4=1);/B :老奶奶是被 C 和 E 其中一个扶过大街的 int C=(a2+a3=1);/C :老奶奶是被我和 D 其中一个扶过大街的 int D=(a1+a2=0);/D :B 和 C 都没有扶老奶奶过街 int E=(a4=0);/E :我没有扶老奶奶 if(A+B+C+D+E=2)/5 个人有且只有个人说的是真话 for (j = 0; j #include using namespace std; #define N 5 int main() int aN=1,0,0,0,0;/1 扶了。0 没扶。 do /ABCDE5 个变量存 5 个人的真假话状态, 1 为真话,0 为假话 int A=(a0+a4=0);/A :我和 E 都没有扶老奶奶 int B=(a2+a4=1);/B :老奶奶是被 C 和 E 其中一个扶过大街的 int C=(a2+a3=1);/C :老奶奶是被我和 D 其中一个扶过大街的 int D=(a1+a2=0);/D :B 和 C 都没有扶老奶奶过街 int E=(a4=0);/E :我没有扶老奶奶 if(A+B+C+D+E=2)/5 个人有且只有个人说的是真话 for (int i = 0; i using namespace std; 7 #define N 5 int aN;/1 扶了。0 没扶。 void f(int k) int i; if(k=N) int sum=0; for(i=0;i=0;i-) ak=i; f(k+1); int main() f(0); return 0; 第 5 题:牌型种数(2015 年省赛 C/C+B 组第 7 题) 小明被劫持到 X 赌城,被迫与其他 3 人玩牌。 一副扑克牌(去掉大小王牌,共 52 张) ,均匀发给 4 个人,每个人 13 张。 这时,小明脑子里突然冒出一个问题: 如果不考虑花色,只考虑点数,也不考虑自己得到的牌的先后顺序,自己手里能拿到的初始 牌型组合一共有多少种呢? 8 答案: 3598180 解法 1:暴力法,比较慢,5 秒左右出答案,但不容易出错 #include using namespace std; int main() int a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13;/13 种点数 int cnt=0; for(a1=0;a1 using namespace std; int cnt=0; void f(int sum,int n) int i; if(sum13|(13-n)*4+sum13) return;/剪枝 if(sum=13) cnt+; return; 9 for(i=0;i #include using namespace std; int a11;/n1)/剪枝,很重要,不剪的话会超过 2000ms return; if(m=n) if(abs(sum-1)n; C(2,0,0);/从 2 开始,选 n 个数中的第 0 个,已选出的数的和是 0 return 0; 第 7 题(背包问题) 练习系统 ALGO-115 算法训练 和为 T 12 #include using namespace std; long long a100; int flag100; long long T; int n; int cnt; bool ok() for(int i=0;i=0;i-) if(flagi) coutn; for(i=n-1;i=0;i-) cinai; cinT; f(0,0); cout using namespace std; string s=“0123456789ABCDEF“; void f(int n) 16 if(n=16) f(n4); coutn; f(n); return 0; 2./十六进制转十进制 /练习系统-基础练习-BASIC-11 问题描述 从键盘输入一个不超过 8 位的正的十六进制数字符串,将它转换为正的十进制数后输出。 注:十六进制数中的 1015 分别用大写的英文字母 A、B 、C、D、E、F 表示。 样例输入 FFFF 样例输出 65535 #include using namespace std; int main() int i,t; unsigned sum=0; string s; cins; for(i=0;si;i+) t=si #include using namespace std; bool cmp(int x,int y) return xy; int main() int a1000,b1000; int T,n,i; cinT; while(T-) cinn; for(i=0;iai; for(i=0;ibi; sort(a,a+n); sort(b,b+n,cmp); int sum=0; for(i=0;i int M2020; int idx=1; void tri(int r,int c,int n)/从坐标(r,c) 的元素开始三角填数,三角形上边长为 n int i; if(n #include using namespace std; int main() int w,m,n; int i,j;/m 的行号列号 int x,y;/n 的行号列号 cinwmn; m-,n-;/题目要求的序号从 1 开始,减一表示从 0 开始 i=m/w;/m 的行号 j=m%w;/m 的列号 if(i%2=1) j=w-1-j;/奇数列要调整 x=n/w;/n 的行号 y=n%w;/n 的列号 if(x%2=1) y=w-1-y;/奇数列要调整 cout using namespace std; char a66;/存放分组情况 char c66;/存放数独 int cnt; bool ok(int row,int col) int i,j; for(i=0;iai; cinn; while(n-) cins; int x=s0-0; int y=s1-0; cxy=s2; sudoku(0); if(cnt=0) cout #include using namespace std; #define M 500 #define N 500 /上下左右 UDLR,按字典序排是 DLRU,即下左右上,所以 d 数组调整了一下 const int d2 = 1,0, 0,-1, 0,1, -1,0, ; bool mazeMN;/位置点的状态,0 表示通道,1 表示墙 bool visitedMN;/标志着该点是否被访问到了 int m,n;/迷宫的实际行数和列数 struct Point /结构体,表示位置点 int x,y;/位置点的横纵坐标 30 ; Point preMN;/记录了到达本点前一步的那个点的坐标 int step; string s=“; void print_path(Point p)/递归打印路径 if(p.x=0 Point q = prep.xp.y; print_path(q); step+; if(p.xq.x) s+=D; else if(p.xq.y) s+=R; else s+=L; void bfs()/广度优先算法 bfs queue Q;/定义队列 Q Point p=0,0; visited00=true;/入口点被访问 Q.push(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论