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