掛け算を筆算で行うとき,0 ~ 9 までの数字をすべて使う筆算のうち,
掛け算の結果が最も小さくなるものを求めよ。
lim = 245 # 後で再設定した
min.ans = lim^2
for (i in 1:lim) {
a = unlist(strsplit(as.character(i), ""))
for (j in 1:lim) {
n = as.numeric(unlist(strsplit(as.character(j), "")))
b = c(a, n)
for (k in seq_along(n)) {
b = c(b, unlist(strsplit(as.character(i * n[k]), "")))
}
if (length(table(b)) == 10 && min.ans >= i * j) {
min.ans = i * j
if (j > 99) {
cat(sprintf("\n\n%5i\nx%4i\n-----\n%5i\n%4i\n%3i\n-----\n%5i\n",
i, j, i * (j%%10), i * ((j%/%10)%%10), i * j%/%100, i * j))
} else {
cat(sprintf("\n\n%5i\nx%4i\n-----\n%5i\n%4i\n-----\n%5i\n",
i, j, i * (j%%10), i * (j%/%10), i * j))
}
}
}
}
18
x 245
-----
90
72
36
-----
4410