原题链接:蓝桥杯2015年第六届真题-机器人繁殖
解题思路:
看到位数是50位,稍微虚了一下,不过看之前的大佬解释,double足以承受这个规模的打击。不需要高精度。
又查了一下低精度类型数据的范围:
以下范围均在DEV中测试
int的范围是:-2147483648---2147483647 (10位)
long和int没有区别
long long的范围是:-9223372036854775808---9223372036854775807 (19位)
double的范围是:-1.79769e+308---1.79769e+308
long double的范围是:-1.18973e+4932---1.18973e+4932
好了,规模的问题考虑清楚了,下面就是推公式了:
原谅我偷懒不想MathType...
直接把x的值,即题目要求的初始的机器人的个数求出来,然后惨无人道地输出就行了
注意事项:
1.数据规模要注意,但是double足够。
2.能推公式就推公式
参考代码:
#include <iostream> #include <cmath> using namespace std; int main(void) { double x,n,S; cin >> n >> S; x = (S - n + 2*pow(2, n) - 2)/(2*pow(2, n) - 1); cout << x << endl; return 0; }
0.0分
0 人评分
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程
发表评论 取消回复