n
Bir dizideki sayılar göz önüne alındığında (tamsayı olduklarını varsayamazsınız), boyuttaki tüm alt kümelerin ürününü hesaplamak istiyorum n-1
.
Bunu, tüm sayıları bir araya getirip ardından sayılardan hiçbiri sıfır olmadığı sürece sırayla her birine bölerek yapabilirsiniz. Ancak bunu bölünmeden ne kadar çabuk yapabilirsiniz?
Bölünmeye izin vermiyorsanız, n-1 boyutundaki tüm alt kümelerin ürününü hesaplamak için gereken minimum aritmetik işlem sayısı (örneğin çarpma ve toplama) nedir?
Açıkça (n-1)*n
çarpımlarla yapabilirsiniz.
Açıklığa kavuşturmak için, çıktı n
farklı ürünlerdir ve okuma ve yazmadan belleğe izin verilenler dışındaki tek işlem çarpma, toplama ve çıkarma işlemlerinden ibarettir.
Örnek
Giriş üç numarası varsa 2,3,5
, o zaman çıkış üç sayı olduğu 15 = 3*5
, 10 = 2*5
ve 6 = 2*3
.
Kazanma kriteri
Cevaplar, kodlarının kullanacağı aritmetik işlemlerin sayısı için kesin bir formül vermelidir n
. Hayatı basitleştirmek için, n = 1000
formülünü değerlendirerek puanını değerlendireceğim. Ne kadar düşük olursa o kadar iyi.
Kodunuz için kesin bir formül oluşturmak çok zorsa, kodu çalıştırabilir n = 1000
ve koddaki aritmetik işlemleri sayabilirsiniz. Kesin bir formül ancak en iyisidir.
n=1000
Kolay karşılaştırma için cevabınıza puanınızı eklemelisiniz .
+
üzerinde endeksleri saymak? Bu durumda, dizi indekslemesi de sayılır mı? (çünkü ekleme ve dereferencing için sözdizimsel şeker sonra).
(n-1)*n
çarpma Yani (n-2)*n
sağ,?