求最小数 n,使 n 异或 n+1 等于给定 k
原文:https://www . geesforgeks . org/find-minist-number-n-xor-n1-equals-given-k/
给你一个正数 k,我们需要找到一个正整数 n,这样 n 和 n+1 的异或等于 k,如果不存在这样的 n,那么打印-1。 示例:
Input : 3
Output : 1
Input : 7
Output : 3
Input : 6
Output : -1
下面是我们对一个数 n 做 n 异或(n+1)的两种情况 T1】情况 1 : n 为偶数。n 的最后一位是 0,(n+1)的最后一位是 1。其余位在两者中都是相同的。所以如果 n 是偶数,异或总是 1。 案例:n 为奇数n 的最后一位为 1。在 n+1 中,最后一位是 0。但是在这种情况下,可能会有更多的位因进位而不同。进位继续向左传播,直到我们找到第一个 0 位。所以 n XOR n+1 将得到 2^i-1,其中 I 是从左数 n 中第一个 0 位的位置。所以,我们可以说,如果 k 是 2^i-1 的形式,那么我们的答案就是 k/2。 最后我们的步骤是:
If we have k=1, answer = 2 [We need smallest positive n]
Else If k is of form 2^i-1, answer = k/2,
else, answer = -1
C++
// CPP to find n such that XOR of n and n+1
// is equals to given n
#include <bits/stdc++.h>
using namespace std;
// function to return the required n
int xorCalc(int k)
{
if (k == 1)
return 2;
// if k is of form 2^i-1
if (((k + 1) & k) == 0)
return k / 2;
return -1;
}
// driver program
int main()
{
int k = 31;
cout << xorCalc(k);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java to find n such that XOR of n and n+1
// is equals to given n
class GFG
{
// function to return the required n
static int xorCalc(int k)
{
if (k == 1)
return 2;
// if k is of form 2^i-1
if (((k + 1) & k) == 0)
return k / 2;
return 1;
}
// Driver code
public static void main (String[] args)
{
int k = 31;
System.out.println(xorCalc(k));
}
}
// This code is contributed by Anant Agarwal.
Python 3
# python to find n such that
# XOR of n and n+1 is equals
# to given n
# function to return the
# required n
def xorCalc(k):
if (k == 1):
return 2
# if k is of form 2^i-1
if (((k + 1) & k) == 0):
return k / 2
return 1;
# driver program
k = 31
print(int(xorCalc(k)))
# This code is contributed
# by Sam007
C
// C# to find n such that XOR
// of n and n+1 is equals to
// given n
using System;
class GFG
{
// function to return the required
// n
static int xorCalc(int k)
{
if (k == 1)
return 2;
// if k is of form 2^i-1
if (((k + 1) & k) == 0)
return k / 2;
return 1;
}
// Driver code
public static void Main ()
{
int k = 31;
Console.WriteLine(xorCalc(k));
}
}
// This code is contributed by vt_m.
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP to find n such
// that XOR of n and n+1
// is equals to given n
// function to return
// the required n
function xorCalc($k)
{
if ($k == 1)
return 2;
// if k is of form 2^i-1
if ((($k + 1) & $k) == 0)
return floor($k / 2);
return 1;
}
// Driver Code
$k = 31;
echo xorCalc($k);
// This code is contributed by vt_m.
?>
java 描述语言
<script>
// Javascript to find n such that XOR of n and n+1
// is equals to given n
// function to return the required n
function xorCalc(k)
{
if (k == 1)
return 2;
// if k is of form 2^i-1
if (((k + 1) & k) == 0)
return parseInt(k / 2);
return 1;
}
// driver program
var k = 31;
document.write( xorCalc(k));
// This code is contributed by itsok.
</script>
输出:
15
本文由Shivam Pradhan(anuj _ charm)供稿。如果你喜欢 GeeksforGeeks 并想投稿,你也可以使用write.geeksforgeeks.org写一篇文章或者把你的文章邮寄到 review-team@geeksforgeeks.org。看到你的文章出现在极客博客主页上,帮助其他极客。 如果发现有不正确的地方,或者想分享更多关于上述话题的信息,请写评论。
版权属于:月萌API www.moonapi.com,转载请注明出处