เราคือตัวเลข X เป้าหมายคือการหาตัวเลขระหว่าง 0 ถึง X ซึ่งผลรวมของ X เท่ากับ XOR ที่มี X
เราจะทำสิ่งนี้โดยข้ามหมายเลข จาก i=0 ถึง i<=X และสำหรับ i แต่ละอัน ถ้า (i+X==i^X) ก็นับจำนวนที่เพิ่มขึ้น
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − X=6
ผลผลิต − การนับจำนวนที่รวมด้วย X ==XOR กับ X:2
คำอธิบาย - ตัวเลขเป็น 0 และ 1 เท่านั้น
ป้อนข้อมูล − X=20
ผลผลิต − การนับจำนวนที่รวมด้วย X ==XOR กับ X:8
คำอธิบาย − ตัวเลขคือ 0 1 2 3 8 9 10 11
แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
-
เราหาจำนวนเต็ม X.
-
ฟังก์ชัน sumisXOR(int x) รับ x และส่งกลับจำนวนตัวเลขที่ผลรวมของ x เท่ากับ xor กับ x
-
นับเริ่มต้นเป็น 0
-
ข้ามจาก i=0 ไปยัง i<=x.
-
ถ้า i+x==i^x จำนวนที่เพิ่มขึ้น
-
เมื่อสิ้นสุด for loop count จะได้ผลลัพธ์ที่ต้องการ...
-
นับคืนและพิมพ์
ตัวอย่าง
#include <bits/stdc++.h>
#include <math.h>
using namespace std;
int sumisXOR(int x){
int count = 0;
for (int i = 0; i <= x; i++){
if((i+x)==(i^x))
{ count++; }
}
return count;
}
int main(){
int X = 15;
int nums=sumisXOR(X);
cout <<endl<<"Count of numbers whose sum with X == XOR with X: "<<nums;
return 0;
} ผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
Count of numbers whose sum with X == XOR with X: 1