列表

详情


NC214098. DismantlingNumber

描述

给定一个正整数,请你判断它能否表示成三个的正整数()次幂的和,如果能输出"YES",否则输出"NO"。(不包含引号)

输入描述

输入一个正整数

输出描述

输出一行字符串"YES"或"NO"(不包含引号)

示例1

输入:

10

输出:

YES

说明:

示例2

输入:

4

输出:

NO

示例3

输入:

1024

输出:

YES

说明:

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Python3(3.9) 解法, 执行用时: 58ms, 内存消耗: 2936K, 提交时间: 2020-11-27 19:34:13

n = int(input())
flag = 0
for i in range(1, 32):
    for j in range(1, 32):
        for k in range(1, 32):
            if (pow(2, i) + pow(2, j) + pow(2, k) == n):
                flag = 1
if flag == 1:
    print('YES')
else:
    print('NO')

C(clang11) 解法, 执行用时: 2ms, 内存消耗: 372K, 提交时间: 2020-12-06 11:16:39

#include <stdio.h>

int main(){
	int n;
	scanf("%d", &n);
	int amount=0;
	if(n<=4 || n%2!=0) {
		printf("NO\n");
		return 0;
	}
	while(n){
		if(n%2==1) amount++;
		n>>=1;
	}
	if(amount<=3) printf("YES\n");
	else printf("NO\n");
	return 0;
}

C++ 解法, 执行用时: 3ms, 内存消耗: 404K, 提交时间: 2021-10-16 15:39:29

#include<bits/stdc++.h>
using namespace std;int main(){int _;cin>>_;cout<<(__builtin_popcountll(_)<=3&&_>5&&!(_&1)?"YES\n":"NO\n");}

上一题