4674: 【GESP2503三级】2025

内存限制:64 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:7 解决:7

题目描述

⼩ A 有⼀个整数$x$ ,他想找到最小的正整数$y$ 使得下式成立:
$$(x\ and\ y)+(x\ or \ y)=2025$$
其中$and$ 表示二进制按位与运算,$or$ 表示二进制按位或运算。如果不存在满足条件的$y$ ,则输出$-1$ 。

输入

一行,一个整数$x$ 。

输出

一行,一个整数,若满足条件的$y$ 存在则输出$y$ ,否则输出$-1$ 。

样例输入 复制

1025

样例输出 复制

1000

提示

#include <cstdio>

using namespace std;
int x;
int main() {
    scanf("%d", & x);
    for (int i = 1; i <= 2025; i++)
        if ((x & i) + (x | i) == 2025) {
            printf("%d\n", i);
            return 0;
        }
    printf("-1\n");
    return 0;
}