没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
第三届蓝桥杯第三届蓝桥杯cc++真题真题
第三届蓝桥杯真题第三届蓝桥杯真题 c/c++
以下题⽬我⾃⼰也并不是所有的题⽬都是⼀次性就能做对或是有结题思路的。有些题⽬也是经过查证⽹上相关的资料或是参考了别⼈的
代码和解题思路才做出来的。总的来看,这份题⽬考了很多循环的只是,还有模拟,动态规划的只是。
其中做题过程中,也有了⼀些新的体会。起初做代码填空题的时候我没办法知道⾃⼰做的是对还是错,就跑到⽹上查答案,后来发现,
题⽬已经给出了代码,起始我们可以⾃⼰加上头⽂件,然后把空缺的代码加上进⾏调试的,这样就可以验证⾃⼰补充的代码是否正确了。
此外在进⾏调试的时候,可以利⽤重定向,将输⼊输出重定向到⽂件中,例如:
输⼊重定向:freopen("testin.txt","r",stdin)
输出重定向: freopen("testout.txt","w",stdout);
重定向以后,再有⼤量输⼊数据或者是⼤量输出数据的时候就省去了输出测试数据的时间,还是⽐较⽅便的。但是需要注意的是,再编
程答题需要提交代码的时候⼀定要记得把重定向语句注释掉或者删掉,否者将会出错。
结果填空题,由于只需要结果,所以我们的算法不必要很优,有很多时候都是可以⽤穷举的暴⼒解决⽅案获取答案的。
以下的题⽬我也只是做了简单的测试,虽然测试结果是正确的。但是也不保证答案的正确性,所以如果有错的地⽅可以帮忙加以改正。
。。
《《1》微⽣物增值》微⽣物增值
问题
假设有两种微⽣物 X 和 Y
X出⽣后每隔3分钟分裂⼀次(数⽬加倍),Y出⽣后每隔2分钟分裂⼀次(数⽬加倍)。
⼀个新出⽣的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出⽣的 X=10, Y=89,求60分钟后Y的数⽬。
如果X=10,Y=90 呢?
本题的要求就是写出这两种初始条件下,60分钟后Y的数⽬。
题⽬的结果令你震惊吗?这不是简单的数字游戏!真实的⽣物圈有着同样脆弱的性质!也许因为你消灭的那只 Y 就是最终导致 Y 种群灭绝
的最后⼀根稻草!
请忍住悲伤,把答案写在“解答.txt”中,不要写在这⾥!
解析
可以将时间的推移以0.5分钟为步长,分层6个阶段,每个阶段的X⽤素组x[7]表⽰,其中x[i]表⽰分裂后第0.5*i分钟的x个数,周期为6。
其中x[1]、x[3]、x[5]的X会吃掉Y;⽽x[6]的X会增值,增值后的X转到状态x[1]重新开始新⼀次的循环。60分钟后,既为120个半分钟后,⽽Y
每2分钟分裂⼀次,既为每4个半分钟分裂⼀次。
答案
0
94371840
参考代码
#include<stdio.h>
#include<stdlib.h>
#define M 1000
int main()
{
long long xn,yn,newx,x[7];
int s=120,i,j;
scanf("%d%d",&xn,&yn);
for(i=0;i<7;i++)x[i]=0;
x[1]=xn;
for(i=1;i<=s;i++)
{
yn=yn-x[1]-x[3]-x[5];//X吃Y
if(yn<=0){yn=0;break;}//y被吃完了
newx=2*x[6];//X增值
for(j=6;j>1;j--)x[j]=x[j-1];//X的状态转移
x[1]=newx;
if(i%4==0)yn=2*yn;//Y增值
}
printf("%lld\n",yn);
return 0;
}
《《2》古堡算式》古堡算式
问题
福尔摩斯到某古堡探险,看到门上写着⼀个奇怪的算式:
ABCDE * ? = EDCBA
他对华⽣说:“ABCDE应该代表不同的数字,问号也代表某个数字!”
华⽣:“我猜也是!”
于是,两⼈沉默了好久,还是没有算出合适的结果来。
请你利⽤计算机的优势,找到破解的答案。
把 ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这⾥!
? 0-9
A 0-9
E 0-9
B 0-9
C 0-9
D 0-9
E 0-9
分析
本题中总共有7中不同的符号,可以⽤7重嵌套循环进⾏暴⼒求解满⾜等式的情况既可。
答案
A 2
B 1
C 9
D 7
E 8
? 4
参开代码
/*
总结:有时候如果允许的话,可以使⽤穷举法进⾏求解 。此外不是什么判断条件都可以在for(;;)循环的中间的,其中第⼀个空填初始条件,第⼆个条件
为跳出循环的条件,最后⼀个空为迭代条件。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,d,e,f,i=0;
for(a=0;a<=9;a++)//2
{
for(b=0;b<=9;b++)//1
{
if(b==a)continue;
for(c=0;c<=9;c++)//9
{
if(c==a||c==b)continue;
for(d=0;d<=9;d++)//7
{
if(d==a||d==b||d==c)continue;
for(e=0;e<=9;e++)//8
{
if(e==a||e==b||e==c||e==d)continue;
for(f=0;f<=9;f++)//4
{
if(f==a||f==b||f==c||f==d||f==e)continue;
if((a*10000+b*1000+c*100+d*10+e)*f==(e*10000+d*1000+c*100+b*10+a))
{
printf("%d %d %d %d %d %d",a,b,c,d,e,f);
}
}
}
}
}
}
}
return 0;
}
《《 3》⽐酒量》⽐酒量
问题
有⼀群海盗(不多于20⼈),在船上⽐拼酒量。过程如下:打开⼀瓶酒,所有在场的⼈平分喝下,有⼏个⼈倒下了。再打开⼀瓶酒平分,⼜
有倒下的,再次重复...... 直到开了第4瓶酒,坐着的已经所剩⽆⼏,海盗船长也在其中。当第4瓶酒平分喝下后,⼤家都倒下了。
等船长醒来,发现海盗船搁浅了。他在航海⽇志中写到:“......昨天,我正好喝了⼀瓶.......奉劝⼤家,开船不喝酒,喝酒别开船......”
请你根据这些信息,推断开始有多少⼈,每⼀轮喝下来还剩多少⼈。
如果有多个可能的答案,请列出所有答案,每个答案占⼀⾏。
格式是:⼈数,⼈数,...
例如,有⼀种可能是:20,5,4,2,0
答案写在“解答.txt”中,不要写在这⾥!
分析
此题可以⽤4重嵌套循环求解,每重循环的控制变量为喝第i瓶酒前的⼈数。此处解题的关键是:1、每次喝酒都是评分;2船长喝完第四
瓶酒后才倒下,并且船长总共和了⼀瓶酒。
答案
12 6 4 2 0
15 10 3 2 0
18 9 3 2 0
20 5 4 2 0
参考代码
#include<stdio.h>
int main()
{
//freopen("result.txt","w+",stdout);
int p,i,j,k;
for(p=4;p<=20;p++)//第⼀瓶酒前⼈数
{
for(i=1;i<p;i++)//第⼆瓶酒前⼈数
{
for(j=1;j<i;j++)//第三瓶酒前⼈数
{
for(k=1;k<j;k++)//第四瓶酒前⼈数
{
float num=1.0/p+1.0/i+1.0/j+1.0/k; //船长喝了⼀瓶酒
if(num==1){
printf("%d %d %d %d %d\n",p,i,j,k,0);
}
}
剩余12页未读,继续阅读
资源评论
随风浪仔
- 粉丝: 680
- 资源: 2221
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功