n
Angka yang diberikan dalam array (Anda tidak dapat menganggap itu bilangan bulat), saya ingin menghitung produk dari semua subset ukuran n-1
.
Anda dapat melakukan ini dengan mengalikan semua angka bersama dan kemudian membaginya dengan masing-masing secara berurutan, selama tidak ada angka yang nol. Namun, seberapa cepat Anda dapat melakukan ini tanpa divisi?
Jika Anda tidak mengizinkan pembagian, berapakah jumlah minimum operasi aritmatika (mis. Penggandaan dan penambahan) yang diperlukan untuk menghitung produk dari semua himpunan bagian ukuran n-1?
Jelas Anda bisa melakukannya dalam (n-1)*n
multiplikasi.
Untuk memperjelas, output adalah n
produk yang berbeda dan satu-satunya operasi selain dari membaca dan menulis ke memori diperbolehkan adalah perkalian, penambahan dan pengurangan.
Contoh
Jika input memiliki tiga angka 2,3,5
, maka outputnya adalah tiga angka 15 = 3*5
, 10 = 2*5
dan 6 = 2*3
.
Kriteria menang
Jawaban harus memberikan formula yang tepat untuk jumlah operasi aritmatika yang akan digunakan oleh kode mereka n
. Untuk membuat hidup lebih sederhana, saya hanya akan memasukkan n = 1000
formula Anda untuk menilai nilainya. Semakin rendah semakin baik.
Jika terlalu sulit untuk menghasilkan formula yang tepat untuk kode Anda, Anda bisa menjalankannya n = 1000
dan menghitung operasi aritmatika dalam kode. Namun formula yang tepat adalah yang terbaik.
Anda harus menambahkan skor n=1000
Anda ke jawaban Anda untuk perbandingan yang mudah.
+
pada indeks dihitung? Jika ini masalahnya, apakah array indexing juga dihitung? (karena itu adalah gula sintaksis untuk penambahan dan dereferencing).
(n-1)*n
multiplikasi Maksud Anda (n-2)*n
, bukan?