Soru Maratonu 2016 Çözümleri: Soru 5 – Yüz Altın

Soru Maratonu 2016’da sorulan sorularımızla devam ediyoruz, bu seferki sorumuz diğer sorulara nazaran biraz daha kolay olan 100 Altın sorusudur. Biraz daha kolay diyorum çünkü cevabımızı okuduğunuzda aslında o kadar da zor olmadığını siz de fark edeceksiniz. Fakat yönetimini bulduğunuz zaman kolaylaşan bir soru olduğunu da belirtmekte fayda var. Aksi halde programla çözmekten başka yolunuz kalmıyor ve programla çözmek de çok tecrübeli programcı olmayanlar için o kadar da kolay olmayabilir.

Soru Maratonunun sitesinde yayımlandığı haliyle sorumuza bakalım:

100 altını gruplara bölmek istiyorsunuz. Herhangi iki grup arasındaki altın farkının en fazla 2 olması koşuluyla bu işlem kaç farklı biçimde yapılabilir?

Not: Permütasyonlar farklı sayılmıyor.

Örnek : Eğer soru 6 altın için sorulsaydı cevap 9 olacaktı:
(1,1,1,1,1,1), (1,1,1,1,2), (1,1,2,2), (1,1,1,3), (1,2,3), (2,2,2), (2,4), (3,3), (6).

 

Soru aslında çok karmaşık gibi görünüyor. Hele ki 100 tane altın için bu sorusu elle çözmek imkansız gibi, değil mi? Bakalım öyle mi?

I. Yöntem (Programla)

Bu yöntem bildiğimiz programlama yöntemi olup kısa bir program yazarak sizi çözüme ulaştıracaktır. Kodu doğrudan sizin de çalıştırabileceğiz şekilde çevrimiçi halini düzenleyip sizinle paylaşıyoruz. İstediğiniz kadar altın için tüm sonuçları görecek şekilde siz de çalıştırabilirsiniz. Bilgisayarınızda bir programlama dili compiler’ı olmasına gerek yok:

http://rextester.com/SSKIQO67990

Tabi şimdi diyebilirsiniz “Evet, programla ne kadar kolaymış?“. Aslında bu tarz optimize olmuş program yazmak da o kadar kolay değil. Üzerinde bayağı bir düşünmeye ihtiyacınız olabiliyor bazen, tabi bu örneğin de çok zor olduğu söylenemez. Fakat şimdi size elle nasıl çözülür onu da paylaşacağız.

II. Yöntem (Kalem Kağıtla)

Bu yöntem daha çok programlama bilmeyip, bu tarz sorulara nasıl yaklaşılması gerektiğiyle ilgilidir. Bu tarz soruların daha basit hallerini anlamaya çalışıp daha karmaşık veya yüksek sayılı hallerini genelleyebilirsiniz. Bu çok önemlidir ve matematiğin tümevarım kavramının en temel koşuludur. Bunu, bu soruyla örneklendirerek ne demek istediğimizi daha iyi anlatabileceğimizi düşünüyoruz. Şöyle ki; bu soru 2 ila 10 altın arası bir altın sayısıyla sorulsaydı işimiz kolaydı aslında. Verilen yönteme göre kolaylıkla çözebilirdik.

\(2\): {1,1} ve {2} : [2]

\(3\): {1,1,1}, {1,2} ve {3}: [3]

\(4\): {1,1,1,1}, {1,1,2}, {1,3}, {2,2}, {4}: [5]

\(5\): {1,1,1,1,1}, {1,1,1,2}, {1,1,3}, {1,2,2}, {1,4}, {5}: [6]

\(6\): Soruda örnekle cevabın 9 olduğunu biliyoruz.

\(7\): 10 çıkacaktır diye düşünebilirsiniz bu noktada, çünkü 2,3,5,6,9,…’dan sonra hangi sayı gelecek diye sorsam size muhtemelen 10 cevabını verirdiniz. Evet, haklısınız da cevap 10 olacak. Yukarıdaki programı da kullanarak çok beyninizi yormadan diğerlerinin cevaplarını yazıyorum:

\(8\): [14] tane

\(9\): [15] tane

\(10\): [20] tane

Şimdi buradaki seri gözünüze çarpmıştır. \(2,3,5,6,9,10,14,15,20…\)

Dikkat ettiyseniz altın sayısı, sadece çift altın sayılarını ele aldığımızda oldukça düzenli bir seri ortaya çıkıyor, tekler ise sadece bir önceki çiftlerin bir fazlası..!

\(2,5,9,14,20,…\)  (https://oeis.org/A000096)

Bu seri de aslında basit bir seridir. Her seferinde bir fazla artış göstererek ilerleyen bir seridir. Formülü ise serinin yanına eklediğimiz linkte olduğu için;

\(\frac{n\cdot (n+3)}{2}\)

oluyor. Burada sadece öğrenmek istediğiniz sonucun sayısını ikiye bölüp formüle koymak kalıyor. Misal, 6 için hesaplarken \(n=3\) olacak şekilde sonuca ulaşabilirsiniz:

\(\frac{3\cdot (3+3)}{2}=9\)

Aynı şekilde \(100\) için bakıyorsak;

\(\frac{50\cdot (50+3)}{2}=1.325\)

cevabına ulaşıyoruz. Böylelikle hiçbir programlama bilmeden bu soruyu çözebildiğimizi görmüşsünüzdür. Sadece basit halleri üzerinden genel bir seri çıkartımı yaparak sonuca ulaştık.

Umarım cevaplarımızı beğenmişsinizdir. Sorularınız için lütfen iletişime geçmeyi unutmayın!