Giả sử chúng ta có một số n, chúng ta phải kiểm tra xem tích các chữ số ở vị trí chẵn của n có chia hết cho tổng các chữ số ở vị trí lẻ của n hay không. Các vị trí được bắt đầu đếm từ phải sang trái. Đúng nhất ở vị trí 1.
Vì vậy, nếu đầu vào là n =59361, thì đầu ra sẽ là Đúng là (1 * 3 * 5) =(6 + 9).
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- digit_count:=số lượng chữ số của số n đã cho
- tổng:=0, prod:=1
- while n> 0, do
- nếu số_khoảng số là chẵn, thì
- prod:=prod * chữ số cuối cùng của n
- nếu không,
- tổng:=tổng + chữ số cuối cùng của n
- n:=thương số của (n / 10)
- digit_count:=digit_count - 1
- nếu số_khoảng số là chẵn, thì
- nếu sản phẩm chia hết cho tổng thì
- trả về True
- trả về Sai
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
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