UVA 10883 Supermean——二项式系数
很容易就能与二项式系数关联起来,但是中间结果用double都会溢出,因此可以取log,最后把结果进行指数运算就可以了,最后注意一下输入正负的问题
#include #include #include #include #include using namespace std;double logc[50005], a[50005];int main() { int n, T; scanf("%d", &T); for (int kase = 1; kase <= T; kase++) { scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%lf", &a[i]); logc[0] = log10(1); for (int i = 1; i < n; i++) logc[i] = logc[i-1] + log10(n-i) - log10(i); double ans = 0.0; for (int i = 0;i < n; i++) { if (a[i] < 0) ans -= pow(10,logc[i]+log10(-a[i])-log10(2)*(n-1)); else ans += pow(10,logc[i]+log10(a[i])-log10(2)*(n-1)); } printf("Case #%d: %.3lf\n", kase, ans); } return 0;}
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~