解题思路:
看到位数是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分
2 人评分
C语言程序设计教程(第三版)课后习题8.9 (C语言代码)浏览:690 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:556 |
ASCII帮了大忙浏览:797 |
淘淘的名单 (C语言代码)答案错误???浏览:624 |
【计算两点间的距离】 (C语言代码)浏览:1522 |
回文数字 (C语言代码)浏览:2539 |
2^k进制数 (C语言描述,蓝桥杯)浏览:1457 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:729 |
C语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:724 |
printf基础练习 (C语言代码)浏览:2268 |