クレイジーな数学者は幅広い数のコレクションを所有しているため、彼が残したスペースはかなり限られています。いくらかを節約するために、彼は整数を折り畳まなければなりませんが、残念ながら彼は本当に怠け者です。あなたが彼を助けたいなら、あなたの仕事は、私たちの数マニアックのために与えられた正の整数を折り畳む関数/プログラムを作成することです。
整数の折り方
数字の合計で均等に割り切れる場合は、数字の合計で割ります。その要件を満たさない場合は、その桁数の合計で割ったときに残りを取ります。結果がに達するまでプロセスを繰り返します1
。折り畳まれた整数は、実行する必要があった操作の数です。例を見てみましょう(たとえば1782
):
その桁の合計を取得します
1 + 7 + 8 + 2 = 18
。1782
はで割り切れる18
ので、次の数字は1782 / 18 = 99
です。99
はで割り切れない9 + 9 = 18
ため、残りを取ります:99 % 18 = 9
。9
は明らかにで割り切れる9
ので、それを分割して取得し1
ます。
結果は3
、到達するために3つの操作が必要であったからです1
。
ルールと仕様
一部の整数の桁数の合計は
1
、10
またはなど100
です。あなたのプログラムはそのような場合に対処する必要はありません。つまり、入力として指定された整数の桁数の合計がに等しくないことが保証され、指定された整数を使用した1
操作では、桁数の合計が得られません1
(1
それ自体は例外で、ターゲット")。たとえば、入力として、10
または受信することはありません20
。入力はより大きい正の整数になり
1
ます。デフォルトの抜け穴が適用されます。
入力を取得し、標準的な平均値で出力を提供できます。
テストケース
入力->出力 2-> 1 5-> 1 9-> 1 18-> 2 72-> 2 152790-> 2 152-> 3 666-> 3 777-> 3 2010-> 3 898786854-> 4
プロセスを視覚化し、さらにテストケースを試すことができるプログラムを次に示します。
これはcode-golfなので、各言語で最も短いコード(バイト単位)が勝ちます!
8987868546
有効な入力がある、それはあなたのテストツールを破る、と回答のも、多くの(すべてではない)...う
898786854
でした8987868546
(6
最後にa を追加しました)
8987868546
1(ルール1に適合)では8987868546
なく、1(ルール2に適合)よりも大きい正の整数です。