蓝桥杯竞赛题目:”机器人繁殖“解析及题解


标题:机器人繁殖
X星系的机器人可以自动复制自己。它们用1年的时间可以复制出2个自己,然后就失去复制能力。
每年X星系都会选出1个新出生的机器人发往太空。也就是说,如果X星系原有机器人5个,
1年后总数是:5 + 9 = 14
2年后总数是:5 + 9 + 17 = 31
如果已经探测经过n年后的机器人总数s,你能算出最初有多少机器人吗?
数据格式:
输入一行两个数字n和s,用空格分开,含义如上。n不大于100,s位数不超过50位。
要求输出一行,一个整数,表示最初有机器人多少个。
例如:
用户输入:
2 31
则程序应该输出:
5
再例如:
用户输入:
97 2218388550399401452619230609499
则程序应该输出:
8
资源约定:
峰值内存消耗 < 512M
CPU消耗  < 1000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。
所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。
注意: main函数需要返回0
注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
注意: 所有依赖的函数必须明确地在源文件中 #include <xxx>, 不能通过工程设置而省略常用头文件。
提交时,注意选择所期望的编译器类型。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

这类算法题目,看起来不难,但是实际编程时,会发现容易被卡住,有些地方跳不出去

那么,接下来,我会为各位解释这类题目的几种算法

第一种:找规律

其实规律不难找出

可以看出来,按照这个规律慢慢推算就可以得出答案

接下来把公式用代码写出即可。

第二种:简单粗暴法

因为题目给出的是,N年和S个机器人,求的是最初的机器人个数

而在C语言中,while()循环中,当括号里面的数字为0时默认跳出循环

那么就可以把1~n/2中间的数字都代进去试一遍,看看谁符合条件

为什么是n/2呢,因为题目要求S要小于50位数,而直接代入n会导致数字太大

接下来就可以,用for循环逐个代入1~n然后用while来循环选出符合条件的数字,找到以后用break跳出。

第三种:递归法

思路同上,只不过代码更短更简洁。


最后,其实算法类的题目做起来很有意思,解题的过程会枯燥,会无趣,但是坐在那里一个下午,一个晚上,一个周末解出题目后的快感,也是酣畅淋漓的。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69917874/viewspace-2643121/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69917874/viewspace-2643121/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值