Cho trước hai số. Nhiệm vụ của chúng ta là kiểm tra xem chúng có phải là đảo ngữ của nhau hay không trong biểu diễn nhị phân. Chúng tôi có thể giải quyết vấn đề này một cách nhanh chóng trong python bằng phương pháp Bộ đếm (có thể lặp lại) và So sánh từ điển.
Ví dụ
Input: a = 8, b = 16 Output : Yes Binary representations of both numbers have same 0s and 1s.
Thuật toán
Step 1 : Given two numbers. Step 2 : Convert both number into its binary using bin() function and remove first two characters because of bin(). Step 3 : Since binary representation of both numbers could differ in length so we will append zeroes in start of shorter string to make both string of equal length. Step 4 : Compare both dictionaries, if value of 0’s and 1’s in both dictionaries are equal then binary representations of two numbers are anagram otherwise not. Binary representations into dictionary.
Mã mẫu
Hàm
# function to Check if binary representations
# of two numbers are anagram
from collections import Counter
def anagramoftwonumber(p1,p2):
# convert numbers into in binary
# and remove first two characters of
# output string because bin function
#'0b' as prefix in output string
bno1 = bin(p1)[2:]
bno2 = bin(p2)[2:]
# append zeros in shorter string
zeros = abs(len(bno1)-len(bno2))
if (len(bno1)>len(bno2)):
bno2 = zeros * '0' + bno2
else:
bno1 = zeros * '0' + bno1
# convert binary representations
# into dictionary
dict1 = Counter(bno1)
dict2 = Counter(bno2)
# compare both dictionaries
if dict1 == dict2:
print(p1, p2 ,"are two anagram number")
else:
print(p1 , p2 ,"are not anagram number")
# Driver program
if __name__ == "__main__":
n1 = int(input("Enter First number ::>"))
n2 = int(input("Enter Second number ::>"))
anagramoftwonumber(n1,n2)
Đầu ra
Enter First number ::>8 Enter Second number ::>16 8 16 are two anagram number Enter First number ::>3 Enter Second number ::>2 3 2 are not anagram number