Ada pertanyaan di situs yang meminta untuk mengimplementasikan divisi tanpa menggunakan divisi.
Dalam kasus saya, saya meminta Anda untuk melakukan hal yang sama, tetapi hanya menggunakan tambahan.
Apa artinya ini pada dasarnya: penjumlahan adalah satu-satunya operator atau fungsi yang diizinkan yang beroperasi pada angka dan mengembalikan angka lainnya (yaitu tidak ada pengurangan, perkalian, eksponensial, inversi bitwise, dll.). Hal-hal seperti jika pernyataan, penugasan dan operator perbandingan, dan untuk loop masih diizinkan, asalkan di dalamnya, Anda masih menggunakan tambahan.
Tugas Anda adalah membangun fungsi divide(a, b)
yang mengambil dua bilangan bulat positif a
dan b
dan mengembalikan hasil a
yang dibagi dengan b
dan dibulatkan ke nol, tetapi menggunakan penjumlahan dan tidak ada operator aritmatika lainnya, dan tidak ada data lain yang membangun selain angka.
Kode yang menang akan menjadi salah satu yang membutuhkan operasi tambahan paling sedikit harus dilakukan selama set input mana a
bervariasi dari 1
ke 200
dan b
bervariasi dari 1
ke a
.
Untuk melacak hal ini, Anda dapat membuat versi alternatif dari kode Anda yang menggantikan setiap instance a + b
dengan add(a, b)
dan program add
untuk menambah add_used
variabel global serta mengembalikan jumlah dari dua angka.