Puzzles, Maths and Algorithms: Palindrome Numbers
Problem 1: Given a number n, check whether it is a palindrome or not. For e.g., n = 303 is a palindrome, where as n = 302 is not. Give an O(log n) algorithm.Problem 2: Given a number n, find the largest palindrome that is less than or equal to n. For e.g., n = 36, then 33 is the largest palindrome less than or equal to n. Give an O(log n) algorithm.
Problem 3: Given a number n, find all the palindrome less than or equal to n. Give an efficient O(k) algorithm, where k = number of palindromes less than n.
Problem 4: Prove that all palindromes with even length is divisible by 11. For e.x. 6996 is divisible by 11.
Problem 5: Consider a palindrome number generator as follows.
Step 1: n = n + reverse(n)
Step 2: If !is_palindrome(n): Goto Step 1
Given a palindrome number m, find the smallest n which can generate m using this generator. Is it possible that no such n exist?
For e.g., m = 121, we get n = 19. To see this, we get, n1 = 19+91 = 110. In the next step we get n2 = 110 + 011 = 121.
Read full article from Puzzles, Maths and Algorithms: Palindrome Numbers