问题2203--数1(Hard version)

2203: 数1(Hard version)

[命题人 : ]
时间限制 : 1 sec  内存限制 : 128 MB

提交

题目描述

这是这道题目的Hard版本,与Easy版本不同的是$n$的范围。
给定一个正整数$n$,需要你求出$ {\textstyle \sum_{i=0}^{2^{n} }} f\left ( i \right ) $
$f\left ( x \right ) $定义为$x$转化为二进制后1的数量,例如$10=\left ( 1010 \right ) _{2} ,7=\left ( 111 \right ) _{2} $,那么$f\left ( 10 \right ) = 2, f\left ( 7 \right ) =3$。

输入

第一行一个整数$T$,表示有$T$组数据。
接下来$T$行,每行一个整数$n$。
数据范围:$1\le n\le 31$,$1\le T\le 100$

输出

输出一个整数,表示$ {\textstyle \sum_{i=0}^{2^{n} }} f\left ( i \right ) $

样例输入 Copy

2
3
2

样例输出 Copy

13
5

提示

当$n=3$时,有$000,001,010,011,100,101,110,111,1000$,所以一共有13个1.

当$n=2$时,有$00,01,10,11,100$,所以一共有5个1.