เราได้รับตัวเลข S และ K สองตัว เป้าหมายคือการหาคู่ที่เรียงลำดับของตัวเลขบวก โดยที่ผลรวมของมันคือ S และ XOR คือ K
เราจะทำสิ่งนี้โดยเริ่มจาก i=1 ถึง i
มาทำความเข้าใจกับตัวอย่างกัน
ป้อนข้อมูล
ผลผลิต
คำอธิบาย
ป้อนข้อมูล
ผลผลิต
คำอธิบาย
เราใช้จำนวนเต็ม 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) ทั้งคู่เป็นคู่ที่แตกต่างกัน
เมื่อสิ้นสุดการวนซ้ำทั้งหมดจะมีจำนวนคู่ดังกล่าวทั้งหมด
คืนค่าการนับเป็นผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -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.
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
ตัวอย่าง
#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