题目描述
给定一个正整数 N,请你判断这个数能否表示成三个 2 2 的正整数次幂的和,如果能输出"YES",否则输出"NO"。
输入格式
输入一个整数N,1≤N≤10^9
输出格式
输出一行字符串"YES"或"NO"。
样例输入1:
10
样例输出1:
YES
样例输入2:
4
样例输出1:
NO
我的代码
#include <bits/stdc++.h>
using namespace std;
int main() {
long long N;
scanf("%lld", &N);
int cnt = 0;
for (int i = 0; i < 31; i++) {
for (int j = 0; j < 31; j++) {
for (int k = 0; k < 31; k++) {
if (pow(2, i) + pow(2, j) + pow(2, k) == N) {
printf("YES\n");
return 0;
}
}
}
}
printf("NO\n");
return 0;
}
谁来帮我Debug一下:我的代码判断不了几个2的幂相加,就连2、4、8、16也输出“YES”,有什么问题?