[1] 문제
245의 분해합을 구하는 방법 = (245 + 2 + 4 + 5)
245의 분해합은 256이 된다.
따라서 245는 256의 생성자가 된다.
주어진 n의 가장 작은 생성자를 구하는 것이 문제가 요구하는 것
생성자가 존재하지 않는 경우는 0을 출력하기
[2] 해결 방법
숫자 n이 주어진 경우
(1) 1~n까지 루프를 돌린다.
(2) (1)의 숫자를 모듈로 계산을 통해 하나씩 떼어내고 더한다.
(3) (2)의 숫자에 (1)의 완전한 수를 더한다
(4) (3)이 n과 같은지 확인한다.
package main
import (
"bufio"
"fmt"
"os"
)
func bruteforce(n int) {
var answer = 0
for i := 1; i <= n; i++ {
res := modulo(i)
res += i
if res == n {
answer = i
break
}
}
fmt.Println(answer)
}
func modulo(n int) int {
var sum = 0
for n > 0 {
var temp = n % 10
sum += temp
n = n / 10
}
return sum
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n int
fmt.Fscanln(reader, &n)
bruteforce(n)
}