提示: 欢迎访问OurACM平台。
Problem 1708 二进制位数

Accept: 185    Submit: 947
Time Limit: 1000 mSec    Memory Limit : 32768 KB

Problem Description

每个整数都可以表示成一个二进制数。
对于给定的一个正整数N,找出一个小于等于N的正整数M,使得M的二进制位数和N的二进制位数一样,且M的二进制中所包含的1的个数最多,如果存在多个符合条件的M,输出最小的M。

Input

第一行输入一个整数T,代表T组测试数据。接下来有T行,每行一组测试数据,每组测试数据输入一个正整数N(1 <= N <= 10^1000)。

Output

每组测试数据输出一个整数占一行,为所求的正整数M。

Sample Input

2 12 48

Sample Output

11 47

Source

福州大学第六届程序设计竞赛

Submit  Back  Status  Discuss