Generate number with given operation and check if it is palindrome

Given an integer N the task is to create a string out of it by repeating the number such that the length of the resultant string is equal to the sum of the digits in the original number.
For eg: If the number is 61 and the sum of the digits is 6 + 1 = 7 so the string generated after repeating 61 will be of 7 length i.e. 6161616.

Examples:

Input: N = 10101
Output: Yes
Length of the string is given by sum of the digits i.e. 1 + 0 + 1 + 0 + 1 = 3.
So the resultant string is “101” which is a palindrome.

Input: N = 123
Output: No
Length of the string will be 1 + 2 3 = 6.
So the resultant string is “123123” which is not a palindrome.

Approach:

  • Find the sum of the digits of N and repeat the number till the length of the string becomes equal to this sum.
  • Now check if the resultant string is a palindrome or not.
  • If it is a palindrome then print Yes.
  • Else print No.

Below is the implementation of the above approach:

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

// CPP implementation of the approach
#include<bits/stdc++.h>
using namespace std;
  
    // Function that returns true if str is a palindrome
    bool isPalindrome(string str)
    {
        int len = str.length();
        for (int i = 0; i < len / 2; i++)
        {
            if (str[i] != str[len - 1 - i])
                return false;
        }
  
        return true;
    }
  
    // Function that returns true if the 
    // generated string is a palindrome
    bool createStringAndCheckPalindrome(int N)
    {
  
        // sub contains N as a string
        ostringstream out;
        out << N;
        string result = out.str();
      
        string sub = "" + result, res_str = "";
  
        int sum = 0;
  
        // Calculate the sum of the digits
        while (N > 0) 
        {
            int digit = N % 10;
            sum += digit;
            N = N / 10;
        }
  
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.length() < sum)
            res_str += sub;
  
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.length() > sum)
            res_str = res_str.substr(0, sum);
  
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
  
        return false;
    }
  
    // Driver code
    int main()
    {
        int N = 10101;
        if (createStringAndCheckPalindrome(N))
            cout << ("Yes");
        else
            cout << ("No");
    }
      
// This code is contributed by
// Shashank_Sharma

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java implementation of the approach
class GFG {
  
    // Function that returns true if str is a palindrome
    static boolean isPalindrome(String str)
    {
        int len = str.length();
        for (int i = 0; i < len / 2; i++) {
            if (str.charAt(i) != str.charAt(len - 1 - i))
                return false;
        }
  
        return true;
    }
  
    // Function that returns true if the 
    // generated string is a palindrome
    static boolean createStringAndCheckPalindrome(int N)
    {
  
        // sub contains N as a string
        String sub = "" + N, res_str = "";
  
        int sum = 0;
  
        // Calculate the sum of the digits
        while (N > 0) {
            int digit = N % 10;
            sum += digit;
            N = N / 10;
        }
  
        // Repeat the substring until the length
        // of the resultant string < sum
        while (res_str.length() < sum)
            res_str += sub;
  
        // If length of the resultant string exceeded sum
        // then take substring from 0 to sum - 1
        if (res_str.length() > sum)
            res_str = res_str.substring(0, sum);
  
        // If the generated string is a palindrome
        if (isPalindrome(res_str))
            return true;
  
        return false;
    }
  
    // Driver code
    public static void main(String args[])
    {
        int N = 10101;
        if (createStringAndCheckPalindrome(N))
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 implementation of the approach
  
# Function that returns true if 
# str is a palindrome
def isPalindrome(s):
  
    l = len(s)
    for i in range(l // 2):
        if (s[i] != s[l - 1 - i]):
            return False
    return True
  
# Function that returns true if the 
# generated string is a palindrome
def createStringAndCheckPalindrome(N):
      
    # sub contains N as a string
    sub = "" + chr(N)
    res_str = ""
  
    sum = 0
  
    # Calculate the sum of the digits
    while (N > 0) :
        digit = N % 10
        sum += digit
        N = N // 10
  
    # Repeat the substring until the length
    # of the resultant string < sum
    while (len(res_str) < sum):
        res_str += sub
  
    # If length of the resultant string exceeded 
    # sum then take substring from 0 to sum - 1
    if (len(res_str) > sum):
        res_str = res_str[0: sum]
  
    # If the generated string is a palindrome
    if (isPalindrome(res_str)):
        return True
  
    return False
  
# Driver code
if __name__ == "__main__":
      
    N = 10101
    if (createStringAndCheckPalindrome(N)):
        print("Yes")
    else:
        print("No")
  
# This code is contributed by ita_c

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# implementation of the approach 
  
using System ;
  
class GFG { 
  
    // Function that returns true if str is a palindrome 
    static bool isPalindrome(string str) 
    
        int len = str.Length; 
        for (int i = 0; i < len / 2; i++) { 
            if (str[i] != str[len - 1 - i]) 
                return false
        
  
        return true
    
  
    // Function that returns true if the 
    // generated string is a palindrome 
    static bool createStringAndCheckPalindrome(int N) 
    
  
        // sub contains N as a string 
        string sub = "" + N, res_str = ""
  
        int sum = 0; 
  
        // Calculate the sum of the digits 
        while (N > 0) { 
            int digit = N % 10; 
            sum += digit; 
            N = N / 10; 
        
  
        // Repeat the substring until the length 
        // of the resultant string < sum 
        while (res_str.Length< sum) 
            res_str += sub; 
  
        // If length of the resultant string exceeded sum 
        // then take substring from 0 to sum - 1 
        if (res_str.Length > sum) 
            res_str = res_str.Substring(0, sum); 
  
        // If the generated string is a palindrome 
        if (isPalindrome(res_str)) 
            return true
  
        return false
    
  
    // Driver code 
    public static void Main() 
    
        int N = 10101; 
        if (createStringAndCheckPalindrome(N)) 
            Console.WriteLine("Yes"); 
        else
            Console.WriteLine("No"); 
    
    // This code is contributed by Ryuga

chevron_right


Output:

Yes


My Personal Notes arrow_drop_up