Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Check if any permutation of a number is divisible by 3 and is Palindromic in Python
Divisibility by 3
The given task is to determine whether the permutation of the digits of the given number can form a new number that satisfies two conditions: it must be divisible by 3 and also be a palindromic number.
A number is said to be palindromic if the reversal of a number is the same as the original, such as 121 or 1331, and a number is said to be divisible by 3 if the sum of its digits is divisible by 3. For example, let's look at the following scenarios:
Scenario 1
Input: 121 Output: False Explanation: For the given input the permutations are : 121, 112, 211 among these, only 121 is palindrome. The sum of its digits (1+2+1=4) which is not divisible by 3. so the result is false.
Scenario 2
Input: 303 Output: True Explanation: For the given input the permutations are 033, 303, 330, etc. Among these Among these 303 is palindrome. The sum of its digits 3+0+3=9 which is divisible by 3. Hence the result is true.
Let's dive into the example to understand more about checking if any permutation of a number is divisible by 3 and is palindromic.
Example: Divisibility by 3 Using Python
In the following example, we are going to check whether the given input is palindromic and is divisible by 3 or not.
from itertools import permutations
def x(num_str):
return sum(int(d) for d in num_str) % 3 == 0
def y(num_str):
return num_str == num_str[::-1]
def demo(n):
a = str(n)
b = set()
for p in permutations(a):
if p[0] == '0':
continue
c = ''.join(p)
if c in b:
continue
b.add(c)
if y(c) and x(c):
return True
return False
print(demo(121))
print(demo(303))
Following is the output of the above program:
False True
Advertisements