计算正数的有序对,以便在C ++中它们的和为S,异或为K
我们给了两个数字S和K。目标是找到有序的正数对,使得它们的和为S,XOR为K。
我们将从i=1到i<S-1,从j=i+1到j<S开始。如果任何一对(i,j)的总和==S并且i^j==K(XOR)。然后将递增计数加2,因为(i,j)和(j,i)都将被计为不同的对。
让我们通过示例来理解。
输入值
S=10 K=4
输出结果
Ordered pairs such that sum is S and XOR is K: 2
说明
Pairs will be (3,7) and (7,3)
输入值
S=12 K=6
输出结果
Ordered pairs such that sum is S and XOR is K: 0
说明
No such pairs possible.
以下程序中使用的方法如下
我们取整数S和K。
函数sumXOR(ints,intk)取s和k并返回具有sum=s和xor=k的有序对的计数
对的初始变量计数为0。
使用两个for循环遍历以成对。
从i=1到i<s-1。并且j=i+1到j<s-1。
现在,对于每对(i,j),检查(i+j==s)&&(i^j==k)。如果真增量计数为2,则(i,j)和(j,i)都是不同的对。
在所有循环结束时,计数将包含此类对的总数。
返回计数结果。
示例
#include <bits/stdc++.h> using namespace std; int sumXOR(int s, int k){ int count = 0; for (int i = 1; i < s; i++){ for(int j=i+1; j<s-1; j++){ if( (i+j)==s && (i^j)==k){ count+=2; //(i,j) and (j,i) are two pairs } } } return count; } int main(){ int S = 9, K = 5; cout <<"Ordered pairs such that sum is S and XOR is K: "<< sumXOR(S,K); return 0; }
输出结果
如果我们运行上面的代码,它将生成以下输出-
Ordered pairs such that sum is S and XOR is K: 4