给定正整数n 。问题是检查该数字是否为“ Fibbinary Number”。二进制数是整数,其二进制表示形式不包含连续的整数。
例子 :
Input : 10
Output : Yes
Explanation: 1010 is the binary representation
of 10 which does not contains any
consecutive 1's.
Input : 11
Output : No
Explanation: 1011 is the binary representation
of 11, which contains consecutive
1's.
方法:如果(n&(n >> 1))== 0,则’n’是一个不是其他的数字。
C++
// C++ implementation to check whether a number
// is fibbinary or not
#include
using namespace std;
// function to check whether a number
// is fibbinary or not
bool isFibbinaryNum(unsigned int n) {
// if the number does not contain adjacent ones
// then (n & (n >> 1)) operation results to 0
if ((n & (n >> 1)) == 0)
return true;
// not a fibbinary number
return false;
}
// Driver program to test above
int main() {
unsigned int n = 10;
if (isFibbinaryNum(n))
cout << "Yes";
else
cout << "No";
return 0;
}
Java
// Java implementation to check whether
// a number is fibbinary or not
class GFG {
// function to check whether a number
// is fibbinary or not
static boolean isFibbinaryNum(int n) {
// if the number does not contain
// adjacent ones then (n & (n >> 1))
// operation results to 0
if ((n & (n >> 1)) == 0)
return true;
// not a fibbinary number
return false;
}
// Driver program to test above
public static void main(String[] args) {
int n = 10;
if (isFibbinaryNum(n) == true)
System.out.println("Yes");
else
System.out.println("No");
}
}
// This code is contributed by
// Smitha Dinesh Semwal
Python3
# Python3 program to check if a number
# is fibinnary number or not
# function to check whether a number
# is fibbinary or not
def isFibbinaryNum( n):
# if the number does not contain adjacent
# ones then (n & (n >> 1)) operation
# results to 0
if ((n & (n >> 1)) == 0):
return 1
# Not a fibbinary number
return 0
# Driver code
n = 10
if (isFibbinaryNum(n)):
print("Yes")
else:
print("No")
# This code is contributed by sunnysingh
C#
// C# implementation to check whether
// a number is fibbinary or not
using System;
class GFG {
// function to check whether a number
// is fibbinary or not
static bool isFibbinaryNum(int n) {
// if the number does not contain
// adjacent ones then (n & (n >> 1))
// operation results to 0
if ((n & (n >> 1)) == 0)
return true;
// not a fibbinary number
return false;
}
// Driver program to test above
public static void Main() {
int n = 10;
if (isFibbinaryNum(n) == true)
Console.WriteLine("Yes");
else
Console.WriteLine("No");
}
}
// This code is contributed by vt_m.
PHP
> 1))
// operation results to 0
if (($n & ($n >> 1)) == 0)
return true;
// not a fibbinary number
return false;
}
// Driver code
$n = 10;
if (isFibbinaryNum($n))
echo "Yes";
else
echo "No";
// This code is contributed by mits
?>
Javascript
输出 :
Yes
时间复杂度:O(1)。