Bài toán: Cho số nguyên n, kiểm tra tích các chữ số ở vị trí lẻ (từ phải sang trái, 1-based) có bằng tích các chữ số ở vị trí chẵn hay không.
Ví dụ
n = 2364: Vị trí lẻ (4, 6) → tích = 24; Vị trí chẵn (3, 2) → tích = 6. Không bằng nhau.
Lưu ý: Code gốc xét từ chữ số cuối (units) là vị trí lẻ.
Triển khai Python
def solve(num):
if num < 10:
return False
odd_place = 1
even_place = 1
while num > 0:
d = num % 10
odd_place *= d
num //= 10
if num == 0:
break
d = num % 10
even_place *= d
num //= 10
return odd_place == even_place
# Test
print(solve(2364)) # False (24 != 6)
print(solve(1221)) # True: odd=1*2=2, even=2*1=2
Kết quả
True
Giải thích
- Duyệt chữ số từ phải sang trái (units → tens → hundreds...).
- Chữ số đầu tiên (units) tính vào
odd_place, tiếp theoeven_place, luân phiên. - Nếu số chữ số lẻ, chữ số đầu tiên (most significant) sẽ vào
odd_place. - Trường hợp
num < 10trả về False (không có cặp).