hdu 2178 猜数字
要猜到最大的数字m,也就是说,在1到m间的每一个数,你都能在n次内把它猜出来!http://hi.baidu.com/xiao%5Fyu%5Ffeng/blog/item/11ab800ed1a7a3236159f334.html
所以说在最坏的情况下,在1到m间,你最多只要猜log2(m)+1(取整)次,所以易知==>m=2^n-1.即猜n次,你能猜到的最大的数为2^n-1.我们也可认为,在数1到2^n-1间,我们都可以在n次内猜出来,如果大于这个数,n次内我们就哟可能猜不来了。例如1--7间,我们至少要猜3次猜可以
#include<stdio.h>
int main()
{
int t, n, m;
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
m = 1;
while (n--) m <<= 1;
printf("%d\n", m-1);
}
return 0;
}

浙公网安备 33010602011771号