题目描述:
给定一个正整数 N N,Homswarth想要判断这个数能否表示成三个 2 2 的正整数次幂的和,如果能输出"YES",否则输出"NO"。
输入格式:
输入一个数 N, 1≤N≤10^9
输出格式:
输出一行字符串"YES"或"NO"。
样例输入1:
10
样例输出1:
YES
样例输入2:
4
样例输入2:
NO
我的代码: 问题是不能判断这个数是不是三个二的幂的和(连2的幂都算:2,4,8,16……)
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
scanf("%d", &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;
}
我应该怎么改?