เราได้รับตัวเลข S และ K สองตัว เป้าหมายคือการหาคู่ที่เรียงลำดับของตัวเลขบวก โดยที่ผลรวมของมันคือ S และ XOR คือ K
เราจะทำสิ่งนี้โดยเริ่มจาก i=1 ถึง 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(int s, int k) รับ s และ k และคืนค่าจำนวนคู่ที่เรียงลำดับด้วย sum=s และ xor=k
-
ใช้ตัวแปรเริ่มต้นนับเป็น 0 สำหรับคู่
-
สำรวจโดยใช้สองลูปเพื่อสร้างคู่
-
เริ่มจาก i=1 ถึง i
-
ตอนนี้สำหรับแต่ละคู่ (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