2013年第四届蓝桥杯C/C++ C组决赛真题题解
来源:互联网 发布:软件定制开发公司名录 编辑:程序博客网 时间:2024/05/17 21:58
汤姆跟爷爷来中国旅游。一天,他帮助中国的小朋友贴标语。他负责贴的标语是分别写在四块红纸上的四个大字:“好、好、学、习”。但是汤姆不认识汉字,他就想胡乱地贴成一行。
请你替小汤姆算一下,他这样乱贴,恰好贴对的概率是多少?
答案是一个分数,请表示为两个整数比值的形式。例如:1/3 或 2/15 等。
如果能够约分,请输出约分后的结果。
注意:不要书写多余的空格。
请严格按照格式,通过浏览器提交答案。
注意:只提交这个比值,不要写其它附加内容,比如:说明性的文字。
【分析】排列组合问题 全排列+枚举
#include <iostream>#include <algorithm>using namespace std;int main(){int a[4]={1,1,2,3}; //1-好 2-学 3-习int cnt=0,tot=0; //cnt-贴对的情况数 tot-可能的情况总数 do{tot++;cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<" "<<a[3]<<endl;if(a[0]==1 && a[1]==1 && a[2]==2 && a[3]==3)cnt++; } while(next_permutation(a,a+4));cout<<cnt<<"/"<<tot<<endl;return 0;}
【答案】1/12
2. 标题:埃及分数
古埃及曾经创造出灿烂的人类文明,他们的分数表示却很令人不解。古埃及喜欢把一个分数分解为类似: 1/a + 1/b 的格式。
这里,a 和 b 必须是不同的两个整数,分子必须为 1
比如,2/15 一共有 4 种不同的分解法(姑且称为埃及分解法):
1/8 + 1/120
1/9 + 1/45
1/10 + 1/30
1/12 + 1/20
那么, 2/45 一共有多少个不同的埃及分解呢(满足加法交换律的算同种分解)? 请直接提交该整数(千万不要提交详细的分解式!)。
请严格按照要求,通过浏览器提交答案。
注意:只提交分解的种类数,不要写其它附加内容,比如:说明性的文字
【分析】循环+枚举
分析此题,因为要求将分数2/45拆成两项,分子为1,两个分数的分母为a和b,因此可采用枚举法,枚举所有可能情况(这里取a<b)。在此基础上,需要注意当a>=45时是无解的,因为要求a和b必须是不同的两个整数。
#include <stdio.h>#include <math.h>int main(){int cnt=0;int a,b;double left,right;for(a=2;a<45;a++){for(b=a+1;b<=10000000;b++){left=1.0/a+1.0/b;right=2.0/45;if(fabs(left-right)<1e-8){printf("1/%d+1/%d=2/45\n",a,b);cnt++;}}}printf("%d\n",cnt);return 0;}
【答案】7
3. 标题:正负金字塔
看下面的图形:
+ - + - - + - + - - + - - + -
- - - + - - - - + - - + - -
+ + - - + + + - - + - - +
+ - + - + + - + - - + -
- - - - + - - - + - -
+ + + - - + + - - +
+ + - + - + - + -
+ - - - - - - -
- + + + + + +
- + + + + +
- + + + +
- + + +
- + +
- +
-
它是由正号和负号组成的金字塔形状。其规律是:每个符号的左上方和右上方符号如果相同,则输出为正号,否则为负号。其第一行数据由外部输入。
以下代码实现了该功能。请仔细阅读代码,并填写划线部分缺失的代码。
【分析】字符处理问题
要注意填空位置等号左边的x[i]是当前行的字符,等号右边的x[i]和x[i+1]是上一行的字符,即当前位置字符的左上方和右上方字符。(PS:题目有一个特别特别特别坑的地方,测试函数中的test应改为main,否则无法编译。。)
#include <stdio.h>void f(char* x, int space, int n){int i;if(n<1) //所打印行的字符数为0,直接返回,结束 return;for(i=0; i<space; i++) //打印第一个字符前面的空格 printf(" ");for(i=0; i<n; i++) //打印当前行的上一行的n个字符 printf("%c ", x[i]);printf("\n");for(i=0; i<n-1; i++) //确定当前行的字符,括号中的x[i]和x[i+1]是当前符号左上方和右上方的符号 x[i] =(x[i]==x[i+1])?'+':'-';f(x,space+1,n-1);}// 用于f的测试int main(){char x[] = "+-+--+-+--+--+-"; //第一行数据由外部输入 //char x[] = "+-+";f(x, 5, sizeof(x)-1);return 0;}【答案】(x[i]==x[i+1])?'+':'-'
- 2013年第四届蓝桥杯C/C++ C组决赛真题题解
- 2014年第五届蓝桥杯C/C++ C组决赛真题题解
- 2014年第五届蓝桥杯C/C++ B组决赛真题题解
- 第六届蓝桥杯决赛 C语言A组 题解 第四题_穿越雷区
- 2017年第八届蓝桥杯C/C++B组决赛题解
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 高僧斗法(编程大题)
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 农场阳光(编程大题)
- 2013第四届蓝桥杯C/C++ C组省赛题解 八题
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 猜灯谜(结果填空)
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 连续奇数和(结果填空)
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 空白格式化(代码填空)
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛
- 【2013年第四届蓝桥杯C/C++程序设计本科B组决赛 连续奇数和(结果填空) 】
- 【2013年第四届蓝桥杯C/C++程序设计本科B组决赛 猜灯谜(结果填空) 】
- 【2013年第四届蓝桥杯C/C++程序设计本科B组决赛 连续奇数和(结果填空) 】
- 【2013年第四届蓝桥杯C/C++程序设计本科B组决赛 空白格式化(代码填空) 】
- 2014年第五届蓝桥杯决赛C组题目 第四题 标题:拼接平方数
- 2013年第四届蓝桥杯C/C++程序设计本科B组决赛 格子刷油漆(编程大题)
- css3弹性方块布局:Flex
- office web app实现文档的预览编辑
- 《程序员的自我修养--链接、装载与库》第一章阅读笔记
- 虚拟机扩充硬盘
- visibility:collapse;在table里面应用效果
- 2013年第四届蓝桥杯C/C++ C组决赛真题题解
- SQuirrel连接hive配置
- c语言求圆的周长和面积
- PRML读书笔记——组合模型
- 人像美妆---妆容迁移算法研究(Makeup transfer)
- 自定义view实现随手指移动的小球及画轨迹
- 优秀博客
- Android动画-属性动画-ObjectAnimator
- Android动画-属性动画-AnimatorSet