Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

XOR and OR of all N-digit palindrome number

  • Last Updated : 03 May, 2021

Given an integer N. The task is to find the XOR and OR of all N digit palindromic numbers.
Examples 
 

Input:
Output: XOR = 714 and OR = 1023
Input:
Output: XOR = 4606 and OR = 16383
 

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

 

Approach: 
 



  • Find the starting and ending number of N-digit palindromic number by: 
     
    starting number = pow(10, n - 1)
    ending number = pow(10, n) - 1
  • Iterate over starting number till ending number and check whether that number is palindromic or not.
  • If the number is palindromic, then take XOR and OR of that number separately.
  • Else proceed for next iteration and print the value of XOR and OR after all iterations.

Below is the implementation of the above approach: 
 

C++




// C++ program to find the XOR
// and OR of all palindrome numbers
// of N digits
#include <bits/stdc++.h>
using namespace std;
  
// Function to check if a number
// is palindrome or not
bool ispalin(int num)
{
    // Convert the num n to string
    string s = to_string(num);
  
    int st = 0, ed = s.size() - 1;
  
    // Iterate over string to
    // check whether it is
    // palindromic or not
    while (st <= ed) {
        if (s[st] != s[ed])
            return false;
        st++;
        ed--;
    }
    return true;
}
  
// Function to find XOR of all
// N-digits palindrome number
void CalculateXORandOR(int n)
{
    // To store the XOR and OR of all
    // palindromic number
    int CalculateXOR = 0;
    int CalculateOR = 0;
  
    // Starting N-digit
    // palindromic number
    int start = pow(10, n - 1);
  
    // Ending N-digit
    // palindromic number
    int end = pow(10, n) - 1;
  
    // Iterate over starting and
    /// ending number
    for (int i = start; i <= end; i++) {
  
        // To check if i is
        // palindromic or not
        if (ispalin(i)) {
            CalculateXOR = CalculateXOR ^ i;
            CalculateOR = CalculateOR | i;
        }
    }
  
    // Print the XOR and OR of all
    // palindromic number
    cout << "XOR = " << CalculateXOR;
    cout << " OR = " << CalculateOR;
}
  
// Driver Code
int main()
{
    int n = 4;
    CalculateXORandOR(n);
    return 0;
}

Java




// Java program to find the XOR
// and OR of all palindrome numbers
// of N digits
class GFG
{
  
// Function to check if a number
// is palindrome or not
static boolean ispalin(int num)
{
    // Convert the num n to string
    String s = Integer.toString(num);
  
    int st = 0, ed = s.length() - 1;
  
    // Iterate over string to
    // check whether it is
    // palindromic or not
    while (st <= ed) {
        if (s.charAt(st) != s.charAt(ed))
            return false;
        st++;
        ed--;
    }
    return true;
}
  
// Function to find XOR of all
// N-digits palindrome number
static void CalculateXORandOR(int n)
{
    // To store the XOR and OR of all
    // palindromic number
    int CalculateXOR = 0;
    int CalculateOR = 0;
  
    // Starting N-digit
    // palindromic number
    int start = (int)Math.pow(10, n - 1);
  
    // Ending N-digit
    // palindromic number
    int end = (int)Math.pow(10, n) - 1;
  
    // Iterate over starting and
    /// ending number
    for (int i = start; i <= end; i++) {
  
        // To check if i is
        // palindromic or not
        if (ispalin(i)) {
            CalculateXOR = CalculateXOR ^ i;
            CalculateOR = CalculateOR | i;
        }
    }
  
    // Print the XOR and OR of all
    // palindromic number
    System.out.print("XOR = " + CalculateXOR);
    System.out.println(" OR = " + CalculateOR);
}
  
// Driver Code
public static void main (String[] args) 
{
    int n = 4;
    CalculateXORandOR(n);
}
  
}
  
// This code is contributed by AnkitRai01

Python3




# Python3 program to find the XOR 
# and OR of all palindrome numbers 
# of N digits 
  
# Function to check if a number 
# is palindrome or not 
def ispalin(num) : 
  
    # Convert the num n to string 
    s = str(num); 
  
    st = 0;
    ed = len(s) - 1
  
    # Iterate over string to 
    # check whether it is 
    # palindromic or not 
    while (st <= ed) :
        if (s[st] != s[ed]) :
            return False
        st += 1
        ed -= 1
      
    return True
  
# Function to find XOR of all 
# N-digits palindrome number 
def CalculateXORandOR(n) : 
  
    # To store the XOR and OR of all 
    # palindromic number 
    CalculateXOR = 0
    CalculateOR = 0
  
    # Starting N-digit 
    # palindromic number 
    start = 10 ** (n - 1); 
  
    # Ending N-digit 
    # palindromic number 
    end = (10**n) - 1
  
    # Iterate over starting and 
    # ending number 
    for i in range( start, end + 1) :
  
        # To check if i is 
        # palindromic or not 
        if (ispalin(i)) :
            CalculateXOR = CalculateXOR ^ i; 
            CalculateOR = CalculateOR | i; 
  
    # Print the XOR and OR of all 
    # palindromic number 
    print("XOR =", CalculateXOR,end = " "); 
    print("OR = ", CalculateOR); 
  
# Driver Code 
if __name__ == "__main__"
  
    n = 4;
    CalculateXORandOR(n); 
  
# This code is contributed by AnkitRai01

C#




// C# program to find the XOR
// and OR of all palindrome numbers
// of N digits
  
using System;
  
class GFG
{
  
// Function to check if a number
// is palindrome or not
static bool ispalin(int num)
{
    // Convert the num n to string
    string s = num.ToString();
  
    int st = 0;
    int ed = s.Length - 1;
  
    // Iterate over string to
    // check whether it is
    // palindromic or not
    while (st <= ed) {
        if (s[st] != s[ed])
            return false;
        st++;
        ed--;
    }
    return true;
}
  
// Function to find XOR of all
// N-digits palindrome number
static void CalculateXORandOR(int n)
{
    // To store the XOR and OR of all
    // palindromic number
    int CalculateXOR = 0;
    int CalculateOR = 0;
  
    // Starting N-digit
    // palindromic number
    int start = (int)Math.Pow(10, n - 1);
  
    // Ending N-digit
    // palindromic number
    int end = (int)Math.Pow(10, n) - 1;
  
    // Iterate over starting and
    /// ending number
    for (int i = start; i <= end; i++) {
  
        // To check if i is
        // palindromic or not
        if (ispalin(i)) {
            CalculateXOR = CalculateXOR ^ i;
            CalculateOR = CalculateOR | i;
        }
    }
  
    // Print the XOR and OR of all
    // palindromic number
    Console.Write("XOR = " + CalculateXOR);
    Console.WriteLine(" OR = " + CalculateOR);
}
  
// Driver Code
public static void Main (string[] args) 
{
    int n = 4;
    CalculateXORandOR(n);
}
  
}
  
// This code is contributed by AnkitRai01

Javascript




<script>
  
// Javascript program to find the XOR
// and OR of all palindrome numbers
// of N digits
  
// Function to check if a number
// is palindrome or not
function ispalin(num)
{
    // Convert the num n to string
    let s = num.toString();
  
    let st = 0, ed = s.length - 1;
  
    // Iterate over string to
    // check whether it is
    // palindromic or not
    while (st <= ed) {
        if (s[st] != s[ed])
            return false;
        st++;
        ed--;
    }
    return true;
}
  
// Function to find XOR of all
// N-digits palindrome number
function CalculateXORandOR(n)
{
    // To store the XOR and OR of all
    // palindromic number
    let CalculateXOR = 0;
    let CalculateOR = 0;
  
    // Starting N-digit
    // palindromic number
    let start = Math.pow(10, n - 1);
  
    // Ending N-digit
    // palindromic number
    let end = Math.pow(10, n) - 1;
  
    // Iterate over starting and
    /// ending number
    for (let i = start; i <= end; i++) {
  
        // To check if i is
        // palindromic or not
        if (ispalin(i)) {
            CalculateXOR = CalculateXOR ^ i;
            CalculateOR = CalculateOR | i;
        }
    }
  
    // Print the XOR and OR of all
    // palindromic number
    document.write("XOR = " + CalculateXOR);
    document.write(" OR = " + CalculateOR);
}
  
// Driver Code
    let n = 4;
    CalculateXORandOR(n);
  
</script>
Output: 
XOR = 4606 OR = 16383

 

Time Complexity: O(10n)
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :