代码哪里错了?
  • 板块学术版
  • 楼主zhege122
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/30 15:23
  • 上次更新2024/8/30 15:41:11
查看原帖
代码哪里错了?
1123449
zhege122楼主2024/8/30 15:23

题目描述:

给定一个正整数 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;
}

我应该怎么改?

2024/8/30 15:23
加载中...