Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

นับคู่ลำดับของจำนวนบวก โดยที่ผลรวมของมันคือ S และ XOR คือ K ใน C++


เราได้รับตัวเลข 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