运用C语言解答,最好有注释

某天的Home_W捡到了块价值为v的黄金,但是一整块黄金数额太大难以使用

因此想把黄金切成n块黄金,使得任意在1-v中的整数价值的物品,都可以

刚好用这n块中的几块购买,而不用找零;

比如v等于7 时我们可以切成 1,2,4

这时有:

1=1;

2=2;

3=1+2;

4=4;

5=1+4;

6=2+4;

7=1+2+4;

但是又由于切割黄金很费钱,Home_W希望满足上面要求时,n最小。

Input
输出第一行是一个整数T; (T<=10000)

接下来T行,每行有一个整数v (V<=1,000,000,000)

Output
对于每个v每行输出一个整数代表符合要求的最小n

SampleInput
1
7
SampleOutput
3