Giả sử chúng ta có một số n, ta cần kiểm tra xem tích các chữ số ở các vị trí chẵn của n có chia hết cho tổng các chữ số ở các vị trí lẻ hay không. Các vị trí được đếm từ phải sang trái, vị trí 1 là chữ số cuối cùng bên phải.
Ví dụ: với n = 59361, kết quả là True vì (1*3*5) = 15 chia hết cho (6+9) = 15.
Giải thuật
digit_count:= số chữ số củan.total := 0,prod := 1.- Khi
n > 0, lặp:- Nếu
digit_countchẵn:prod *= n % 10. - Ngược lại:
total += n % 10. n := n // 10.digit_count := digit_count - 1.
- Nếu
- Nếu
prod % total == 0trả vềTrue, ngược lạiFalse.
Mã ví dụ
from math import log10
def solve(n):
digit_count = int(log10(n)) + 1
total = 0
prod = 1
while n > 0:
if digit_count % 2 == 0:
prod *= n % 10
else:
total += n % 10
n = n // 10
digit_count -= 1
if prod % total == 0:
return True
return False
n = 59361
print(solve(n))
Đầu vào
59361
Đầu ra
True