숫자 n이 있다고 가정합니다. 우리는 다음 조건을 기반으로 하여 어느 것이 더 나은 n의 제수를 찾아야 합니다. 우리는 두 개의 숫자 p와 q를 가지고 있습니다. 자릿수의 합이 같을 때 숫자가 작을수록 좋습니다.
따라서 입력이 n =180과 같으면 제수가 [1, 2, 3, 4, 5, 6, 9, 10, 12, 15, 18, 20, 30, 36, 45, 60, 90, 180]. 따라서 자릿수의 합이 최대인 수는 [9, 18, 36, 45, 90, 180]이지만 그 중 9가 값이 작을수록 좋은 수입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- div :=1, md :=1
- 2~n 범위의 i에 대해 다음을 수행합니다.
- k :=나
- n mod i> 0이면
- 다음 반복으로 이동
- s :=0
- k> 0일 때 수행
- s :=s + k 모드 10
- k :=k / 10
- s> md이면
- md :=s
- div :=나
- div 반환
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
def solve(n): div = 1 md = 1 for i in range(2, n + 1): k = i if n % i > 0: continue s = 0 while k > 0: s += k % 10 k /= 10 if s > md: md = s div = i return div n = 180 print(solve(n))
입력
180
출력
9