Matematikawan yang gila memiliki banyak koleksi angka, dan karena itu ruang yang dia tinggalkan sangat terbatas. Untuk menghemat, ia harus melipat bilangan bulatnya, tetapi sayangnya ia benar-benar malas. Tugas Anda, jika Anda ingin membantunya, adalah membuat fungsi / program yang melipat bilangan bulat positif yang diberikan untuk maniak nomor kami.
Bagaimana cara melipat bilangan bulat?
Jika habis dibagi dengan jumlah digitnya, bagilah dengan jumlah digitnya. Jika tidak memenuhi persyaratan itu, ambil sisanya ketika dibagi dengan jumlah digitnya. Ulangi proses ini hingga hasilnya tercapai 1
. Bilangan bulat terlipat adalah jumlah operasi yang harus Anda lakukan. Mari kita ambil contoh (katakanlah 1782
):
Mendapatkan jumlah dari digit:
1 + 7 + 8 + 2 = 18
.1782
dibagi secara merata oleh18
, jadi nomor selanjutnya adalah1782 / 18 = 99
.99
tidak dibagi secara merata9 + 9 = 18
, maka kita mengambil sisanya:99 % 18 = 9
.9
jelas dibagi oleh9
, jadi kami membaginya dan mendapatkan1
.
Hasilnya adalah 3
, karena 3 operasi diperlukan untuk mencapai 1
.
Aturan dan Spesifikasi
Beberapa bilangan bulat mungkin memiliki jumlah digit yang sama dengan
1
, seperti10
atau100
. Program Anda tidak perlu menangani kasus seperti itu. Itu berarti, Anda akan dijamin bahwa bilangan bulat yang diberikan sebagai input tidak memiliki jumlah digit sama dengan1
, dan tidak ada operasi dengan bilangan bulat yang diberikan akan menghasilkan angka yang jumlah digitnya1
(kecuali untuk1
dirinya sendiri, yaitu " target"). Misalnya, Anda tidak akan pernah menerima10
atau20
sebagai masukan.Input akan bilangan bulat positif lebih tinggi dari
1
.Berlaku celah default .
Anda dapat mengambil input dan memberikan output dengan cara standar apa pun .
Uji Kasus
Input -> Output 2 -> 1 5 -> 1 9 -> 1 18 -> 2 72 -> 2 152790 -> 2 152 -> 3 666 -> 3 777 -> 3 2010 -> 3 898786854 -> 4
Berikut adalah program yang memungkinkan Anda memvisualisasikan proses dan mencoba lebih banyak kasus uji.
Ini adalah kode-golf , jadi kode terpendek di setiap bahasa (dicetak dalam byte) menang!
8987868546
input yang valid, itu akan merusak alat tes Anda, dan juga banyak (jika tidak semua) dari jawabannya ...
898786854
, bukan 8987868546
(Anda telah menambahkan 6
di akhir)
8987868546
bukan 1 ( Aturan 1 bertemu ) dan 8987868546
bilangan bulat positif lebih tinggi dari 1 ( Aturan 2 bertemu ).