Merhaba,

Bugün mukavvemet(!) dersinde hoca çok enteresan bir soru yöneltti:

  a, b, c ve d şeklinde 4 tane tamsayımız var ve bunlar 0'dan 9'a
  kadar rakamlardan oluşuyor. Öyle ki, bir rakam tek bir seferliğine
  kullanılabiliyor. (Yani, örneğin b'nin içinde 7 kullanıldıysa,
  başka bir yerde 7 kullanılamıyor.) Acaba bu kurallar altında
  (a+b+c+d)^2 = abcd denklemini sağlayan tamsayılar hangileridir?

İlk bakışta bunun kağıt kalem ile hesaplanamayacağını düşünerek, hemen
"Acaba bunun programını yazsak iç içe geçen döngüler ne karmaşıklıkta
olur?" deyip ufak bir hesap çıkardım, iç içe dört toplam-fark epey
devasa bir rakam ortaya koydu.

Sonra kafamı ellerimin arasına alıp bir de olaya cebirsel olarak
yaklaşsam dedim:

 a = A0 * 10^0 + A1 * 10^1 + ... + A9 * 10^9
 b = B0 * 10^0 + B1 * 10^1 + ... + B9 * 10^9
 c = C0 * 10^0 + C1 * 10^1 + ... + C9 * 10^9
 d = D0 * 10^0 + D1 * 10^1 + ... + D9 * 10^9

Şeklinde tüm a, b, c, d sayılarına hepsinin içinde 0, 1, 2, ..., 9 olma
olasılıklarına göre ayırdım. Ama bu seferde An, Bn, Cn, Dn katsayıları
deterministik olmadığından abcd sayısı için bir şey söyleyemedim.

Programı yazmaya girişmeden önce işlemin daha kolay bir yolu olup
olmadığını merak ediyorum. Aklıma en son gelen yöntem ise, amele gibi
tüm alt kombinasyonları ayrı dosyalara yazdırıp ardından bunları merge
join etmek.

Sizin fikirleriniz neler?


İyi çalışmalar.

_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap