Given a number N, the task is to find the sum of all N digits palindromic numbers (formed by digits from 1 to 9) that are divisible by 9.
Examples:
Input: N = 1
Output: 9
Explanation:
Only 9 is a palindromic number of 1 digit divisible by 9Input: N = 3
Output: 4995
Explanation:
Three-digit Palindromic Numbers divisible by 9 are –
171, 252, 333, 414, 585, 666, 747, 828, 999
Approach: The key observation in the problem is that if a number is divisible by 9, then the sum of digits of that number is also divisible by 9. Another observation is if we count the number of N-digit palindromic numbers using the digits from 1 to 9, then it can be observed that
Occurrence of each digit = (count of N-digit numbers / 9)
Therefore,
- First find the count of N-digit Palindromic numbers divisible by 9, as:
- Then if N is 1 or 2, the sum will be simply 9 and 99 respectively, as they are the only palindromic numbers of 1 and 2 digits.
- If N > 2, then the sum for Nth digit palindromic numbers divisible by 9 is
Below is the implementation of the above approach:
C++
// C++ implementation to find the sum // of all the N digit palindromic // numbers divisible by 9 #include <bits/stdc++.h> using namespace std; // Function for finding count of // N digits palindrome which // are divisible by 9 int countPalindrome( int n) { int count; // if N is odd if (n % 2 == 1) { count = pow (9, (n - 1) / 2); } // if N is even else { count = pow (9, (n - 2) / 2); } return count; } // Function for finding sum of N // digits palindrome which are // divisible by 9 int sumPalindrome( int n) { // count the possible // number of palindrome int count = countPalindrome(n); int res = 0; if (n == 1) return 9; if (n == 2) return 99; for ( int i = 0; i < n; i++) { res = res * 10 + count * 5; } return res; } // Driver Code int main() { int n = 3; cout << sumPalindrome(n); return 0; } |
Java
// Java implementation to find the sum // of all the N digit palindromic // numbers divisible by 9 import java.util.*; class GFG{ // Function for finding count of // N digits palindrome which // are divisible by 9 static int countPalindrome( int n) { int count; // If N is odd if (n % 2 == 1 ) { count = ( int )Math.pow( 9 , (n - 1 ) / 2 ); } // If N is even else { count = ( int )Math.pow( 9 , (n - 2 ) / 2 ); } return count; } // Function for finding sum of N // digits palindrome which are // divisible by 9 static int sumPalindrome( int n) { // Count the possible // number of palindrome int count = countPalindrome(n); int res = 0 ; if (n == 1 ) return 9 ; if (n == 2 ) return 99 ; for ( int i = 0 ; i < n; i++) { res = res * 10 + count * 5 ; } return res; } // Driver Code public static void main(String[] args) { int n = 3 ; System.out.println(sumPalindrome(n)); } } // This code is contributed by ANKITKUMAR34 |
Python3
# Python3 implementation to find the # sum of all the N digit palindromic # numbers divisible by 9 # Function for finding count of # N digits palindrome which # are divisible by 9 def countPalindrome(n): count = 0 # If N is odd if (n % 2 = = 1 ): count = pow ( 9 , (n - 1 ) / / 2 ) # If N is even else : count = pow ( 9 , (n - 2 ) / / 2 ) return count # Function for finding sum of N # digits palindrome which are # divisible by 9 def sumPalindrome(n): # Count the possible # number of palindrome count = countPalindrome(n) res = 0 if (n = = 1 ): return 9 if (n = = 2 ): return 99 for i in range (n): res = res * 10 + count * 5 return res # Driver Code n = 3 print (sumPalindrome(n)) # This code is contributed by ANKITKUMAR34 |
C#
// C# implementation to find the sum // of all the N digit palindromic // numbers divisible by 9 using System; class GFG{ // Function for finding count of // N digits palindrome which // are divisible by 9 static int countPalindrome( int n) { int count; // If N is odd if (n % 2 == 1) { count = ( int )Math.Pow(9, (n - 1) / 2); } // If N is even else { count = ( int )Math.Pow(9, (n - 2) / 2); } return count; } // Function for finding sum of N // digits palindrome which are // divisible by 9 static int sumPalindrome( int n) { // Count the possible // number of palindrome int count = countPalindrome(n); int res = 0; if (n == 1) return 9; if (n == 2) return 99; for ( int i = 0; i < n; i++) { res = res * 10 + count * 5; } return res; } // Driver Code public static void Main(String[] args) { int n = 3; Console.WriteLine(sumPalindrome(n)); } } // This code is contributed by Amit Katiyar |
4995