文章目录

  • 1.微生物增殖
  • 2.古堡算式
  • 3.比酒量
  • 4.奇怪的比赛
  • 5.方阵转置
  • 6.大数乘法

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种群灭绝的最后一根稻草!

题解:找出规律。
我的解法:找规律—>数学表达式/公式----->代码(但实际在这道题中使问题复杂化了(꒦_꒦) !!!)

#include <iostream>
using namespace std;
int main()
{int n,m;n=10;m=89;int i,x;x=0;//计算x吃的y的数目60min中内。for(i=0;i<20;i++){x+=n*3;n*=2;}cout<<x;cout<<endl;//计算60min中内y出生的数目n=10;m=90;for(i=0;i<10;i++){m=(m-2*n)*2;m=(m-3*n)*2;m=(m-4*n)*2;n=4*n;}cout<<m;cout<<endl;//y最后剩余的数目cout<<x-m;return 0;
}

标准解法:找出规律------>代码

#include<iostream>
using namespace std;int main()
{long long x = 10 , y = 89;for(int i = 0; i < 120; i++){if(i%2==1){y -= x;}if(i%6==0){x *= 2;}if(i%4== 0){y *= 2;}}cout << "x = "<< x << endl <<"y = "<< y;return 0;
} 

2.古堡算式

福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE*?=EDCBA。他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!” 华生:“我猜也是!”,于是,两人沉默了好久,还是没有算出合适的结果来。 请你利用计算机的优势,找到破解的答案,把ABCDE所代表的数字写出来。

推测题意:?可以是ABCDE中的数还是要与ABCDE的数不同:分两种情况(在自己不确定到底是何种的时候,两种都试试)

#include <iostream>
#include <algorithm>
using namespace std;
int main()
{int a[10]={0,1,2,3,4,5,6,7,8,9};int x,y;do{if(a[0]!=0&&a[4]!=0){x=a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];y=a[4]*10000+a[3]*1000+a[2]*100+a[1]*10+a[0];if(x*a[5]==y)cout<<x<<endl;}}while(next_permutation(a,a+10));return 0;
}

3.比酒量

有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复----直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。等船长醒来,发现海盗船搁浅了。他在航海日志中写到:“…昨天,我正好喝了一瓶…奉劝大家,开船不喝酒,喝酒别开船…”
请你根据这些信息,推断开始有多少人,每一轮喝下来还剩多少人。如果有多个可能的答案,请列出所有答案,每个答案占一行。格式是:人数,人数,…
例如,有一种可能是:20,5,4,2,0

题解:重点在于寻找判断的条件,用4层循环代表4轮比拼。

#include <iostream>using namespace std;int main()
{int i,j,k,o;for(i=1;i<=20;i++)//一开始的人数当然不可能为0(依题意){for(j=1;j<i;j++)//每轮都会有人倒下,人数肯定小于上一轮{for(k=1;k<j;k++){for(o=1;o<k;o++)//第四轮全都倒下了,所以没有第五轮了{   //船长一人刚好喝了1瓶if((double)1/i+(double)1/j+(double)1/k+(double)1/o==1.0)cout<<i<<' '<<j<<' '<<k<<' '<<o<<endl;}}}}return 0;
}

4.奇怪的比赛

某电视台举办了低碳生活大奖赛。题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。每位选手的起步分都是10分,某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可用仅含1和0的串来表示,如0010110011就是可能的情况。
你的任务是算出所有可能情况,每个答案占一行。

题解:首先要判断到底使用什么方法进行求解:因为要经过十轮比赛,使用循环的可能性几乎为0(十层循环哎)。若使用全排列:但是十轮的本就是我们需要去求解的,全排列需要确定0和1的次数,而我们求解的问题0和1的次数是不确定的。所以可以考虑采用递归
经过判断

  1. 具有递归出口:score==100或i=10十轮
  2. 具有递归条件:对与错不同的得分。
#include <iostream>using namespace std;
void digui(int a[],int i,int s)
{if(i>10){return;}if(i==10&&s==100){for(int j=1;j<11;j++){cout<<a[j];}cout<<endl;return;}i++;a[i]=1;digui(a,i,s*2);a[i]=0;digui(a,i,s-i);
}
int main()
{int a[11]={0};int i,s;i=1;s=10;a[i]=1;//第i轮答对记为1digui(a,i,s*2);//答对翻倍//为何这里的代码不走了/不执行a[i]=0;//第i轮答错记为0digui(a,i,s-i);//答错减题号    发现在主函数中第二个有变量填入的递归不执行,一二调换顺序可验证//但若是改为即可走/执行a[i]=0;digui(a,1,10-1);return 0;
}

5.方阵转置

对一个方阵转置,就是把原来的行号变列号,原来的列号变行号。例如,如下方阵:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
转置后变为:
1 5 9 13
2 6 10 14
3 7 11 15
4 8 12 16
但如果是对该方阵顺时针旋转(不是转置),却是如下结果:
13 9 5 1
14 10 6 2
15 11 7 3
16 12 8 4
下面代码实现的功能就是要把一个方阵顺时针旋转,请推测划线处的代码。

void rotate(int *x,int rank)
{ int *y=(int*)malloc(___________________);  //填空for(int i=0;i<rank*rank;i++){ y[___________________]= x[i];  //填空}for(i=0;i<rank*rank;i++) x[i]=y[i];free(y);
}int main(int argc,char *argv[])
{ int x[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int rank=4;rotate(&x[0][0],rank);for(int i=0;i<rank;i++){ for(int j=0;j<rank;j++)  printf("%4d",x[i][j]);printf("\n");}return 0;
}

题解:矩阵的转置与旋转
因为a[i][j]=b[j][3-i]
再k=jn+3-i=k%4n+3-k/4

答案:16sizeof(int) i%44+3-i/4

6.大数乘法

对于32位字长的机器,大约超过20亿,用int类型就无法表示了,我们可以选择_int64类型,但无论怎样扩展,固定的整数类型总是有表达的极限!如果对超级大整数进行精确运算呢?一个简单的办法是:仅仅使用现有类型,但是把大整数的运算化解为若干小整数的运算,即所谓“分块法”。下图表示了分块乘法的原理。

可以把大数分成多段(此处为2段)小数,然后用小数的多次运算组合表示一个大数。可以根据int的承载能力规定小块的大小,比如要把int分成2段,则小块可取10000为上限值。注意,小块在进行纵向累加后,需要进行进位校正。以下代码示意了分块乘法的原理(乘数、被乘数都分为2段),请分析代码逻辑,并推测划线处的代码。

答案:n2/base+n3/base+n4%base r[2]/base

2012年第三届蓝桥杯C组 day11相关推荐

  1. 蓝桥杯java初赛本科组,2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题...

    这是2012年第三届蓝桥杯全国软件专业人才设计与开发大赛Java本科组初赛试题的完整版 2012第三届蓝桥杯软件大赛Java语言本科组初赛试题 (说明:1-4题为结果填空,5-7为程序填空,8-10为 ...

  2. 2012年第三届蓝桥杯C/C++程序设计本科B组决赛 拼音字母(编程大题)

    2012年第三届蓝桥杯C/C++程序设计本科B组决赛题目汇总: http://blog.csdn.net/u014552756/article/details/51399827 拼音字母 在很多软件中 ...

  3. 2012年第三届蓝桥杯省赛C语言B组

    2012年第三届蓝桥杯省赛C语言B组 题目来源:蓝桥杯 作者:GGG166 第一题 题目:微生物增殖 假设有两种微生物 X 和 Y X出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次( ...

  4. 2012年第三届蓝桥杯C/C++程序设计本科B组决赛

    1.星期几(取余/excel) 2.数据压缩 3.拼音字母(比较) 4.DNA比对(dp) 5.方块填数 1.星期几 [结果填空] (满分5分)     1949年的国庆节(10月1日)是星期六.  ...

  5. 2012年第三届蓝桥杯试题(C/C++本科B组)

    最后2题参考的大神的代码:http://wenku.baidu.com/link?url=LzyEK9IVOs6qUuMO8xIOxum3YI1O5s_j7pxuADeiuPM7jMm_40wMS1f ...

  6. 2012 【第三届蓝桥杯省赛】 C/C++ B组

    目录 第一题:微生物增殖 第二题:古堡算式 第三题:海盗比酒量 第四题:奇怪的比赛 第五题:方阵旋转 第六题:大数乘法 第七题:放旗子 第八题:密码发生器 第九题:夺冠概率 第十题:取球博弈 第一题: ...

  7. 【省赛B组】2012年第三届蓝桥杯(解法通用)

    文章目录 001 微生物繁殖(结果填空) 002 古堡算式(结果填空) 003 海盗比酒量(结果填空) 004 奇怪的比赛(结果填空) 005 转方阵(结果填空) 006 大数乘法 007 放棋子 0 ...

  8. 2012年第三届蓝桥杯C/CPP省赛B组古堡算式

    题目描述: 福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式: ABCDE * ? = EDCBA 他对华生说:"ABCDE应该代表不同的数字,问号也代表某个数字!" 华生:&qu ...

  9. java放麦子_第三届蓝桥杯javaC组_放麦子

    /* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...

最新文章

  1. python考试题库 pcap_使用Python修改PCAP
  2. django之允许外部机器访问
  3. 【Mood 16 】史上最全github使用方法:github入门到精通
  4. 唐山师范学院计算机考试,[河北]唐山师范学院2017年3月计算机一级考试报名时间...
  5. C语言:(旧)用字符串自由输入计算的计算器(加减乘除)
  6. LeetCode —— 148. 排序链表(Python)
  7. Java学习笔记1.1.1 搭建Java开发环境 - Java概述
  8. 星巴克人造肉产品来了,植物牛肉餐品真香?
  9. html 控件 怎么获取id
  10. 2021微信公开课PRO:微信视频号首次公布运营规则,“点赞”表情成视频号年度表情
  11. 陈强教授《机器学习及R应用》课程 第十二章作业
  12. Nexus默认账号密码
  13. matlab练习程序(渲染三原色)
  14. SEO站群优化排名用哪里的服务器比较好
  15. 【转】ARM GIC中断系列(二):gicv2架构基础
  16. 地中海文明卢浮宫特展全攻略(国家博物馆),通俗版
  17. php自动生成后门代码,PHP小后门代码
  18. 安全多方计算之四:比特承诺
  19. 第三节:带你详解Java的操作符,控制流程以及数组
  20. SpringBoot集成ElasticSearch对API的实际应用封装(七)

热门文章

  1. 免费领移动社交电商小程序系统源码与授权
  2. 详解Liunx中less命令:查看日志,搜索关键字
  3. 48小时突破110亿美元销售额,这些爆款是最大功臣!
  4. 折半查找(二分查找)
  5. 硬件基础学习笔记(四)二极管
  6. mx450显卡相当于GTX什么级别 mx450属于什么档次的显卡
  7. Z690主板无法识别硬盘解决办法(核显状态下设置CSM兼容模式无效,无法打开CSM开关)
  8. 华硕路由器配置虚拟服务器,华硕路由器开启设置虚拟服务器
  9. 数据结构 - 一元多项式相加减(C语言)
  10. php mysql 预处理_PHP MySQL 预处理语句