【官方题解】二进制
2024-12-10 17:32:12
发布于:浙江
3阅读
0回复
0点赞
【题目大意】
给你个整数 ,如果 为整数并且 为整数输出perfect
,如果 为整数但是 不是整数输出good
,如果 不是整数输出general
。
Subtask: 100%
【算法分析】
本题考查对二进制的理解。
我们发现如果 为整数,那么n的二进制肯定只有一位为 ,而 实际就是 。
时间复杂度 O(logn) 。
【参考代码】
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n;
int main(){
cin>>n;
ll g=0,n1=-1;
while(n){
g+=n%2;
n/=2;
n1++;
}
if (g==1) {
g=0;
while(n1){
g+=n1%2;
n1/=2;
}
if (g==1) cout<<"perfect";
else cout<<"good";
}else cout<<"general";
return 0;
}
这里空空如也
有帮助,赞一个