Generate number with given operation and check if it is palindrome

• Last Updated : 28 May, 2021

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++

 `// CPP implementation of the approach``#include``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`

Java

 `// 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"``);``    ``}``}`

Python 3

 `# 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`

C#

 `// 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``}`

Javascript

 ``
Output:
`Yes`

My Personal Notes arrow_drop_up