蓝桥杯2015年第六届真题——机器人繁殖(C/C++)

这篇博客探讨了X星系机器人复制问题,它类似于斐波那契数列。每年机器人的数量按照特定规律增长,通过递推公式求解初始机器人数量。文章提供了代码实现来解决这个问题,利用数学知识计算出n年后机器人的总数并找出最初的机器人个数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器人繁殖


一、题目内容

题目描述

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

二、思路分析

        题目内容比较好理解,读题的时候感觉有点像那个兔子繁殖的经典斐波那契数列问题,并且s位数不超过50位,故可以用double保存,所以本题考的就是数学知识求递推公式。

        首先根据繁殖关系求出an,再根据an求出Sn,a1即为题目所要求的最初机器人的个数,最后再通过循环枚举出a1即可。


三、代码实现

#include <bits/stdc++.h> //万能头文件
using namespace std;

int main() {
	double s, temp = 0;
	int n, a = 0; //a为所求最初个数
	cin >> n >> s;
	while (abs(temp - s) > 1e-6) { //浮点型比较最好不要直接用"=="
		a++; 
		temp = a + n + (a - 1) * (pow(2, n + 1) - 2);
	}
	cout << a << endl;
	return 0;
}

加油哦! 如有错误和需要改进完善之处,欢迎大家纠正指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值