เราคือตัวเลข 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