---
title: "And Then There Were K - CodeForces"
description: "一看到TLE就知道这是技巧题了..."
canonical_url: "https://yangqiuyi.com/blog/suan-fa/and-then-there-were-k-codeforces"
---

> Index of every page on this site: [llms.txt](https://yangqiuyi.com/llms.txt)

一看到TLE就知道这是技巧题了...

<center>
<b>

A. And Then There Were K

</b>

<font style="font-size:smaller">

time limit per test1 second
memory limit per test256 megabytes
input: standard input
output: standard output

</font>
</center>

Given an integer n, find the maximum value of integer k such that the following condition holds:

<center>

n & (n−1) & (n−2) & (n−3) & ... (k) = 0

</center>

where & denotes the [bitwise AND operation](https://en.wikipedia.org/wiki/Bitwise_operation#AND).

**Input:**
The first line contains a single integer t (1≤t≤3⋅104). Then t test cases follow.

The first line of each test case contains a single integer n (1≤n≤109).

**Output:**
For each test case, output a single integer — the required integer k.

**Example:**
input

```text
3
2
5
17
```

output

```text
1
3
15
```

**Note:**
In the first testcase, the maximum value for which the continuous & operation gives 0 value, is 1.

In the second testcase, the maximum value for which the continuous & operation gives 0 value, is 3. No value greater then 3, say for example 4, will give the & sum 0.

5 & 4 ≠ 0,
5 & 4 & 3 = 0.

Hence, 3 is the answer.

## code

```cpp
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a;
    cin >> a;
    for (int i = 0; i < a; i++)
    {
        int n;
        cin >> n;
        int h=1;
        while(h*2<=n) h*=2;
        cout<<h-1<<endl;
    }
}
```

## Sitemap

See the full [sitemap](https://yangqiuyi.com/sitemap.md) for all pages.
