Codeforces Round #640 (Div. 4) A – Sum of Round Numbers を解いた記録
問題の概要
正の整数\(n\)が\(t\)個与えられる.
それぞれの\(n\)に対して,\(n\)を「切りのいい数」(10進数表記で一番左の数字以外のすべての数字が0である数)の和の形にして出力せよ.
ただし,和の形で表すときに項数が最小となるようにせよ.
制約
- \(1 \leq t \leq 10^{4}\)
- \(1 \leq n \leq 10^{4}\)
- 入力はすべて整数
解法
「切りのいい数」は,(1以上9以下の整数)×(10のべき乗)の形で表されます.例えば\(800\)は\(8 \times 10^3 \), \(7\)は\(7 \times 10^0\)です.
1桁の整数(1から9)も「切りのいい数」です.
どのような正の整数も,いくつかの「切りのいい数」の和で表せます.例えば\(9876\)は\(9 \times 10^3 + 8 \times 10^2 + 7 \times 10^1 + 6 \times 10^0\)です.
やるべき操作は次の通りです.
- 与えられる数字\(n\)から0でない桁を取り出す
- 取り出したそれぞれの数字に対して,適切な数(10のべき乗)をかける
- 項数と各項を出力する