alpsahin/tubitak-olimpiyat-dataset-v2 huggingface dataset:
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 23

## [23-25 soruları için açıklama]
n öğrenciden oluşan bir sınıfta, her öğrencinin kendine özgü 1 ve n arasında bir öğrenci numarası vardır. Sınıfta her biri 1 ve n arasında farklı bir sayı ile numaralandırılmış n tane sandalye vardır. Öğrenciler sandalyelere sandalyelerin numaralarına dikkat etmeden oturmuşlardır. Hangi öğrencinin hangi sandalyeye oturduğunu n uzunluklu bir dizi ile gösterebiliriz.
Örneğin [2, 4, 5, 1, 3] dizisi 2 numaralı öğrencinin 1 numaralı sandalyeye, 4 numaralı öğrencinin 2 numaralı sandalyeye, 5 numaralı öğrencinin 3 numaralı sandalyeye, 1 numaralı öğrencinin 4 numaralı sandalyeye, 3 numaralı öğrencinin ise 5 numaralı sandalyeye oturduğu durumu göstermektedir.
Öğretmen sınıfa girdiğinde öğrencilerin yanlış sandalyelere oturduklarını fark etmiş ve her öğrencinin numarası kendi öğrenci numarası ile aynı olan sandalyeye oturmasını istemiştir. Ancak bu işlem gerçekleştirilirken her adımda sadece bir öğrenci ikilisinin sandalyelerini değiştirmelerine izin vermiştir.
Örnek: Başlangıç durumu [2, 4, 5, 1, 3] olsun. 1 ve 2 numaralı öğrenciler sandalyelerini değiştirirlerse, mevcut  durum  [1, 4, 5, 2, 3]  dizisiyle  gösterilebilir.  Daha  sonra  2  ve  4  numaralı  öğrenciler sandalyelerini değiştirirlerse, mevcut durum [1, 2, 5, 4, 3]  dizisiyle gösterilebilir. Daha sonra 3 ve 5 numaralı öğrenciler sandalyelerini değiştirirlerse. mevcut durum [1, 2, 3, 4, 5]  dizisiyle gösterilebilir. Böylece toplam 3 adımda bütün öğrenciler doğru yere oturmuş oldular. Bu örnekte daha az adımda bütün öğrencilerin doğru yere oturamayacağına dikkat ediniz.

---

n = 10 ve başlangıç durumu [4, 9, 2, 5, 7, 6, 1, 3, 10, 8] olsun. Bütün öğrencilerin doğru sandalyeye oturması için en az kaç adım gerekir?

Şıklar:
A) 2 | B) 4 | C) 5 | D) 7 | E) 8

Cevap: D 7

Çözüm:
n = 10 düğümü olan bir çizge oluşturalım. Bu çizgenin her düğümü bir öğrenciye karşılık gelsin. i numaralı öğrenci j numaralı sandalyeye oturuyorsa çizgemize (i, j) yönlü kenarını ekleyelim. Çizgedeki her düğümden tam olarak bir kenar çıkmaktadır ve dolayısıyla toplam n tane kenar vardır. Eğer bir i numaralı öğrenci i numaralı sandalyeye oturuyorsa çizgede i numaralı düğümden çıkan kenarın i numaralı düğüme girdiğine dikkat ediniz. Oluşturulan çizgeye permütasyon çizgesi denmektedir ve döngülerden oluşmaktadır. k düğümden oluşan bir döngüdeki öğrencilerin kendi yerlerine oturabilmeleri için k - 1 adım gerekmektedir.
Bu soruda verilen oturma düzeni için oluşturulacak çizge 3 adet döngüden oluşmaktadır.
1. döngü 4, 1, 7, 5 numaralı düğümlerden oluşmakta olup, ilgili öğrenciler 3 adımda yerlerine oturabilir. 2. döngü 2, 3, 8, 10, 9 numaralı düğümlerden oluşmakta olup, ilgi öğrenciler 4 adımda yerlerine oturabilir. 3. döngü sadece 6 numaralı düğümden oluşmaktadır, ilgili öğrenci zaten doğru yerdedir.
Bütün öğrencilerin doğru yerlerine gelmeleri için gerekli adım sayısı 3 + 4 = 7'dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 24

## [23-25 soruları için açıklama]
n öğrenciden oluşan bir sınıfta, her öğrencinin kendine özgü 1 ve n arasında bir öğrenci numarası vardır. Sınıfta her biri 1 ve n arasında farklı bir sayı ile numaralandırılmış n tane sandalye vardır. Öğrenciler sandalyelere sandalyelerin numaralarına dikkat etmeden oturmuşlardır. Hangi öğrencinin hangi sandalyeye oturduğunu n uzunluklu bir dizi ile gösterebiliriz.
Örneğin [2, 4, 5, 1, 3] dizisi 2 numaralı öğrencinin 1 numaralı sandalyeye, 4 numaralı öğrencinin 2 numaralı sandalyeye, 5 numaralı öğrencinin 3 numaralı sandalyeye, 1 numaralı öğrencinin 4 numaralı sandalyeye, 3 numaralı öğrencinin ise 5 numaralı sandalyeye oturduğu durumu göstermektedir.
Öğretmen sınıfa girdiğinde öğrencilerin yanlış sandalyelere oturduklarını fark etmiş ve her öğrencinin numarası kendi öğrenci numarası ile aynı olan sandalyeye oturmasını istemiştir. Ancak bu işlem gerçekleştirilirken her adımda sadece bir öğrenci ikilisinin sandalyelerini değiştirmelerine izin vermiştir.
Örnek: Başlangıç durumu [2, 4, 5, 1, 3] olsun. 1 ve 2 numaralı öğrenciler sandalyelerini değiştirirlerse, mevcut  durum  [1, 4, 5, 2, 3]  dizisiyle  gösterilebilir.  Daha  sonra  2  ve  4  numaralı  öğrenciler sandalyelerini değiştirirlerse, mevcut durum [1, 2, 5, 4, 3]  dizisiyle gösterilebilir. Daha sonra 3 ve 5 numaralı öğrenciler sandalyelerini değiştirirlerse. mevcut durum [1, 2, 3, 4, 5]  dizisiyle gösterilebilir. Böylece toplam 3 adımda bütün öğrenciler doğru yere oturmuş oldular. Bu örnekte daha az adımda bütün öğrencilerin doğru yere oturamayacağına dikkat ediniz.

---

n = 100 öğrencili bir sınıfta bütün öğrencilerin doğru sandalyeye oturması için en fazla kaç adım gerekebilir?

Şıklar:
A) 50 | B) 99 | C) 100 | D) 198 | E) 199

Cevap: B 99

Çözüm:
Gerekli adım sayısı permütasyon çizgesindeki düğüm sayısından güçlü bağlı bileşen (strongly connected component) sayısı çıkarılarak elde edilir. Düğüm sayısı bu soruda bellidir: n = 100. En fazla adım gerekmesi için güçlü bağlı bileşen sayısının mümkün olan en küçük sayı olan 1 olması gerekmektedir. Bu durumda 99 adım gerekir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 25

## [23-25 soruları için açıklama]
n öğrenciden oluşan bir sınıfta, her öğrencinin kendine özgü 1 ve n arasında bir öğrenci numarası vardır. Sınıfta her biri 1 ve n arasında farklı bir sayı ile numaralandırılmış n tane sandalye vardır. Öğrenciler sandalyelere sandalyelerin numaralarına dikkat etmeden oturmuşlardır. Hangi öğrencinin hangi sandalyeye oturduğunu n uzunluklu bir dizi ile gösterebiliriz.
Örneğin [2, 4, 5, 1, 3] dizisi 2 numaralı öğrencinin 1 numaralı sandalyeye, 4 numaralı öğrencinin 2 numaralı sandalyeye, 5 numaralı öğrencinin 3 numaralı sandalyeye, 1 numaralı öğrencinin 4 numaralı sandalyeye, 3 numaralı öğrencinin ise 5 numaralı sandalyeye oturduğu durumu göstermektedir.
Öğretmen sınıfa girdiğinde öğrencilerin yanlış sandalyelere oturduklarını fark etmiş ve her öğrencinin numarası kendi öğrenci numarası ile aynı olan sandalyeye oturmasını istemiştir. Ancak bu işlem gerçekleştirilirken her adımda sadece bir öğrenci ikilisinin sandalyelerini değiştirmelerine izin vermiştir.
Örnek: Başlangıç durumu [2, 4, 5, 1, 3] olsun. 1 ve 2 numaralı öğrenciler sandalyelerini değiştirirlerse, mevcut  durum  [1, 4, 5, 2, 3]  dizisiyle  gösterilebilir.  Daha  sonra  2  ve  4  numaralı  öğrenciler sandalyelerini değiştirirlerse, mevcut durum [1, 2, 5, 4, 3]  dizisiyle gösterilebilir. Daha sonra 3 ve 5 numaralı öğrenciler sandalyelerini değiştirirlerse. mevcut durum [1, 2, 3, 4, 5]  dizisiyle gösterilebilir. Böylece toplam 3 adımda bütün öğrenciler doğru yere oturmuş oldular. Bu örnekte daha az adımda bütün öğrencilerin doğru yere oturamayacağına dikkat ediniz.

---

n = 20 ve başlangıç durumu [4, 8, 12, 15, 20, 3, 6, 1, 17, 9, 2, 19, 5, 18, 7, 16, 10, 13, 11, 14] olsun. Bütün öğrencilerin doğru sandalyeye oturması için en az kaç adım gerekir?

Şıklar:
A) 4 | B) 8 | C) 16 | D) 20 | E) 24

Cevap: C 16

Çözüm:
Verilen diziye karşılık gelen 20 düğümlü permütasyon çizgesini oluşturalım. Bu çizge her biri bir döngü olan 4 güçlü bağlı bileşenden (strongly connected component) oluşmaktadır. Her döngü için o döngüdeki düğüm sayısının 1 eksiği kadar adım gerekmektedir.
1. döngü 4, 1, 8, 2, 11, 19, 12, 3, 6, 7, 15 numaralı düğümlerden oluşmakta olup, ilgilil öğrenciler 10 adımda yerlerine oturabilir. 2. döngü 3, 2, 8, 10, 9 numaralı düğümlerden olmuşmakta olup, ilgilil öğrenciler 4 adımda yerlerine oturabilir. 2. döngü 9, 10, 17 numaralı düğümlerden oluşmaktadır, ilgilil öğrenciler 2 adımda yerlerine oturabilir. 4. döngü sadece 16 numaralı düğümden oluşmaktadır, ilgilil öğrenci zaten doğru yerdedir.

Bütün öğrencilerin doğru yerlerine gelmeleri için gerekli adım sayısı 10+4+2=16’dır.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 26

[GÖRSEL]
Yukarıdaki çizgenin kaç tane güçlü bağlı bileşeni (Strongly Connected Components) vardır?

Şıklar:
A) 1
B) 2
C) 3
D) 4
E) 5

Cevap: C 3

Çözüm:
Bir yönlü çizgenin güçlü bağlı bileşeni, çizge içinde iki düğüm arasında hem birinden diğerine hem de tam
tersine gidilebilen (aralarında yol olan) en büyük alt çizgeyi ifade eder. Buna göre, verilen çizgede sol
taraftaki 3 düğüm, birbirlerine karşılıklı erişime sahip oldukları için bir güçlü bağlı bileşen oluşturur. Geri
kalan 2 düğüm ise diğer düğümlerle karşılıklı erişime sahip olmadıkları için her biri kendi başına birer
güçlü bağlı bileşendir. Bu nedenle, bu çizgede toplamda 3 güçlü bağlı bileşen bulunur.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 31

Ahmet Adanalı, Banu Balıkesirli, Çiğdem Çanakkaleli, Dilara Diyarbakırlı ve Ersin Edirnelidir. Bu 5 arkadaş önümüzdeki Kurban Bayramı için kendilerine şu kuralları koymuşlardır.
● Herkes Kurban Bayramı’nı yukarıda adı geçen 5 şehirden bir tanesinde geçirecektir.
● Herbir şehirde sadece bir kişi bulunacaktır.
● KimseKurban Bayramı’nı kendi memleketinde geçirmeyecektir.
Bu kurallara uygun kaç farklı bayram tatili planı yapılabilir?

Şıklar:
A) 36
B) 38
C) 40
D) 42
E) 44

Cevap: E 44

Çözüm:
Bize \( n \) tane birbirinden farklı nesne sıralı bir şekilde verilmiş olsun. 
Hiçbir nesnenin orijinal konumunda kalmadığı permütasyona verilen sıralı listenin bir düzensizliği denir. 
\( n \) elemanlı bir kümenin düzensizlik sayısı 
\[ D(n) = n! \left( 1 - \frac{1}{1!} + \frac{1}{2!} - \frac{1}{3!} + \dots + (-1)^n \frac{1}{n!} \right) \]
eşitliğine göre hesaplanabilir. Bu soruda bize \( D(5) \)’in değeri sorulmaktadır. 
\[ D(5) = 5! \left( 1 - 1 + \frac{1}{2} - \frac{1}{6} + \frac{1}{24} - \frac{1}{120} \right) = 44 \text{'tür.} \]
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 32

1 müdür, 1 müdür yardımcısı ve 8 öğretmen yuvarlak bir masa etrafına oturacaklardır. Müdürün bir yanına müdür yardımcısının diğer yanına ise öğretmenlerden birinin oturması gerekmektedir. Bu 10 kişi bu şartlara uygun olarak kaç farklı şekilde oturabilir?

Şıklar:
A) 2×7! | B) 8! | C) 2×8! | D) 9! | E) 2×9!

Cevap: C 2×8!

Çözüm:
Müdür ve müdür yardımcısı yan yana oturmak zorunda oldukları için onları bir kişi olarak düşünebiliriz. Bu durumda oluşan 9 kişi yuvarlak masa etrafına 8! şekilde oturabilir. Müdür ve müdür yardımcısı kendi aralarında 2 farklı şekilde yer değiştirebilirler. Bu yüzden cevap 2×8!'dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 33

[33-34 soruları için açıklama]
Bir bakteri kültürü kabı içerisinde \( n \) adet bakteri bulunmaktadır. \( i \) bakterisinin büyüklüğü \( a_i > 0 \) tamsayısı olsun. \( K > 0 \) tamsayısı ise bakteri dünyasında önemli kabul edilen bir sabit olsun.

\( i \) bakterisinin \( j \) bakterisini yiyebilmesi için \( a_i > a_j \) ve \( a_i \le a_j + K \) şartlarının sağlanması gerekmektedir. \( i \) bakterisi \( j \) bakterisini yerse \( j \) bakterisi kaybolmaktadır ancak \( i \) bakterisinin büyüklüğü değişmemektedir. Bakteri yeme süreci adım adım gerçekleşmektedir ve adımda bir bakteri yenmektedir. Bir bakteri süreç içerisinde birden çok sayıda bakteriyi yiyebilir.

\textbf{Örnek:} \( a = [101, 53, 42, 102, 101, 55, 54] \) dizisi başlangıç durumunda kültür kabında bulunan bakterilerin büyüklüklerini göstersin. \( K = 1 \) olsun.

Muhtemel bir yeme sıralaması aşağıda gösterilmektedir. Verilen dizilerde koyu renkle gösterilen sayı o adımda yenen bakterinin büyüklüğünü göstermektedir.

\( [101, 53, 42, 102, \mathbf{101}, 55, 54] \rightarrow [101, \mathbf{53}, 42, 102, 55, 54] \rightarrow [\mathbf{101}, 42, 102, 55, 54] \rightarrow [42, 102, 55, \mathbf{54}] \rightarrow [42, 102, 55] \)

Bu yeme süreci sonucunda 3 bakteri kalmıştır. Bu örnekte bakteriler hangi sırayla yenirse yensin son durumda daha az sayıda bakterinin kalamayacağına dikkat ediniz.

---

\(a = [36, 31, 25, 17, 11, 22, 8, 14, 20, 34, 28]\) dizisi başlangıç durumunda kültür kabında bulunan bakterierin büyüklüklerini göstersin. \(K = 3\) olsun. Yeme süreci sonucunda bakteri kültürü kabında en az kaç bakteri kalabilir?

Şıklar:
A) 1 | B) 2 | C) 3 | D) 4 | E) 5

Cevap: A 1

Çözüm:
Bakterileri büyükten küçüğe sıralayalım. Sıralı dizi \(a = [36, 34, 31, 28, 25, 22, 20, 17, 14, 11, 8]\). Bu dizide sondan başa doğru giderken her bakterinin kendinden bir önceki bakteri tarafından yenilebileceği görülür. Bu yeme sırasında en sonra 36 büyüklüğünde bakteri kalır. Bu yüzden cevap 1'dir.
Bakterileri büyükten küçüğe sıralayalım. Sıralı dizi aşağıdaki şekildedir. K = 5 için yenmesi mümkün olmayan bakteriler koyu renkle gösterilmiştir.
[100, 96, 91, 87, 82, 78, 75, 71, 69, 63, 58, 54, 51, 46, 44, 38, 33, 31, 24, 20, 15, 13, 7]
Sıralı dizi üzerinde sondan başa doğru giderek her bakterinin bir büyük bakteri tarafından yenme koşulunu kontrol ettiğimizde büyüklüğü koyu renkle gösterilmeyen bütün bakterilerin yenebileceğini görürüz. Bu yüzden K = 5 olabilir.
Aşağıda aynı sıralı dizi gösterilmektedir. Ancak bu sefer K = 4 için yenmesi mümkün olmayan bakterilerin büyüklükleri koyu renkle gösterilmiştir.
[100, 96, 91, 87, 82, 75, 71, 69, 63, 58, 54,51, 46, 44, 38, 33, 31, 24 20, 15, 13, 7]
K = 4 için son durumda en az 11 bakteri kalmak zorundadır. Bu yüzden K = 4 olamaz. Cevap 5'dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 34

[33-34 soruları için açıklama]
Bir bakteri kültürü kabı içerisinde \( n \) adet bakteri bulunmaktadır. \( i \) bakterisinin büyüklüğü \( a_i > 0 \) tamsayısı olsun. \( K > 0 \) tamsayısı ise bakteri dünyasında önemli kabul edilen bir sabit olsun.

\( i \) bakterisinin \( j \) bakterisini yiyebilmesi için \( a_i > a_j \) ve \( a_i \le a_j + K \) şartlarının sağlanması gerekmektedir. \( i \) bakterisi \( j \) bakterisini yerse \( j \) bakterisi kaybolmaktadır ancak \( i \) bakterisinin büyüklüğü değişmemektedir. Bakteri yeme süreci adım adım gerçekleşmektedir ve adımda bir bakteri yenmektedir. Bir bakteri süreç içerisinde birden çok sayıda bakteriyi yiyebilir.

\textbf{Örnek:} \( a = [101, 53, 42, 102, 101, 55, 54] \) dizisi başlangıç durumunda kültür kabında bulunan bakterilerin büyüklüklerini göstersin. \( K = 1 \) olsun.

Muhtemel bir yeme sıralaması aşağıda gösterilmektedir. Verilen dizilerde koyu renkle gösterilen sayı o adımda yenen bakterinin büyüklüğünü göstermektedir.

\( [101, 53, 42, 102, \mathbf{101}, 55, 54] \rightarrow [101, \mathbf{53}, 42, 102, 55, 54] \rightarrow [\mathbf{101}, 42, 102, 55, 54] \rightarrow [42, 102, 55, \mathbf{54}] \rightarrow [42, 102, 55] \)

Bu yeme süreci sonucunda 3 bakteri kalmıştır. Bu örnekte bakteriler hangi sırayla yenirse yensin son durumda daha az sayıda bakterinin kalamayacağına dikkat ediniz.

---

[87, 58, 15, 75, 46, 7, 33, 100, 69, 24, 96, 44, 71, 13, 91, 54, 38, 82, 20, 31, 51, 63, 78]
başlangıç durumunda kültür kabında bulunan bakterilerin büyüklüklerini göstersin. Yeme süreci sonucunda bakteri kültüründe 5 adet bakteri kaldığına göre K en az kaç olabilir?

Şıklar:
A)2
B)3
C)4
D)5
E)6

Cevap: D 5

Çözüm:
Bakterileri büyükten küçüğe sıralayalım. Sıralı dizi aşağıdaki şekildedir. \( K = 5 \) için yenmesi mümkün olmayan bakteriler koyu renkle gösterilmiştir.
\[ [ \mathbf{100}, 96, 91, 87, 82, 78, 75, 71, 69, 63, 58, 54, 51, 46, 44, 38, 33, 31, 24, 20, 15, 13, 7 ] \]

Sıralı dizi üzerinde sondan başa doğru giderek her bakterinin bir büyük bakteri tarafından yenme koşulunu kontrol ettiğimizde büyüklüğü koyu renkle gösterilmeyen bütün bakterilerin yenebileceğini görürüz. Bu yüzden \( K = 5 \) olabilir.

Aşağıda aynı sıralı dizi gösterilmektedir. Ancak bu sefer \( K = 4 \) için yenmesi mümkün olmayan bakterilerin büyüklükleri koyu renkle gösterilmiştir.
\[ [ \mathbf{100}, 96, \mathbf{91}, 87, \mathbf{82}, 78, \mathbf{75}, 71, \mathbf{69}, 63, \mathbf{58}, 54, \mathbf{51}, 46, \mathbf{44}, 38, \mathbf{33}, 31, \mathbf{24}, 20, \mathbf{15}, 13, 7 ] \]

\( K = 4 \) için son durumda en az 11 bakteri kalmak zorundadır. Bu yüzden \( K = 4 \) olamaz. Cevap 5’dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 35

5 kırmızı top ve 5 mavi top içeren bir torbadan 4 adet top bir kerede rastgele olarak seçilecektir. Seçilen 4 toptan 2 tanesinin kırmızı, 2 tanesinin ise mavi olma olasılığı kaçtır?

Şıklar:
A) 5/21 | B) 1/2 | C) 4/10 | D) 3/4 | E) 10/21

Cevap: E 10/21

Çözüm:
Doğru cevap 5 kırmızı toptan 2 tanesinin kaç farklı şekilde seçilebileceğinin 5 mavi toptan 2 tanesinin kaç farklı şekilde seçilebileneceği ile çarpımının 10 toptan 4 topun kaç farklı şekilde seçilebileceğine bölünmesi ile bulunabilir. Yani cevap \(\frac{(5 \ 2) \ (5 \ 2)}{(10 \ 4)} = \frac{10 \times 10}{210} = \frac{10}{21}\)'dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 36

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int yildiz(int n) {
if (n == 0) {
printf("*");
return 1;
} else {
int s = yildiz(n - 1);
for (int i = 0; i < s; i++) {
printf("*");
}
return s + 1;
}
}
```
Yukarıdaki fonksiyon yıldız (3) ile çağrıldığında fonksiyon ekrana kaç tane yıldız ‘*’ basar?

Şıklar:
A) 5 | B) 6 | C) 7 | D) 8 | E) Hiçbiri

Cevap: B 6

Çözüm:
n=3 olduğunda ilk olarak if ifadesinin else bloğuna gider ve burada yıldız(2) ile özyineli olarak fonksiyonu çalıştırır. Dönen değer kadar ekrana yıldız basar. yıldız(2) için fonksiyon yıldız(1) ‘i çağırır ve dönen değer kadar ekrana yıldız basar. yıldız(l) için fonksiyon yıldız(0) ‘i çağırır ve dönen değer kadar ekrana yıllıdız basar. yıldız(0) ekrana 1 tane yıldız basar ve 1 değerini döner. Bu durumda yıldız(1) içindeki for döngüsü 1 defa çalışıp ekrana bir tane yıldız basar ve 1+1=2 değerini döner. yıldız(2) içinde for döngüsü 2 defa çalışıp ekrana iki tane yıldız basar ve 2+1=3 değerini döner. Benzer olarak, yıldız(3) içinde for döngüsü 3 defa çalışıp ekrana üç tane yıldız basar. Yani toplamda basılan yıldız sayısı 1+1+2+3=7 ‘dir.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 37

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int bilinmeyen(int n) {
if (n <= 0)
return 0;
else if (n % 2 == 0)
return bilinmeyen(n- 1) + n * n;
else
return bilinmeyen(n- 1) + (n-1) * (n);
}
```
Yukarıdaki fonksiyon bilinmeyen(4) ile çağrıldığında fonksiyon hangi değer döner?

Şıklar:
A) 10
B) 26
C) 46
D) 96
E) Hiçbiri

Cevap: B 26

Çözüm:
İlk aşamada n=4 olarak verildiğinde kod şu şekilde çalışır:
<table><tr><td>bilinmeyen (4)</td><td>bilinmeyen (3)</td><td>bilinmeyen (2)</td><td>bilinmeyen (1)</td><td>bilinmeyen (0)</td></tr><tr><td>return<br/>bilinmeyen (3)<br/>+ 4*4</td><td>return<br/>bilinmeyen (2)<br/>+ 2*3</td><td>return<br/>bilinmeyen (1)<br/>+ 2*2</td><td>return<br/>bilinmeyen (0)<br/>+ 0*1</td><td>return 0</td></tr></table>
dolayısıyla fonksiyonlar özyineli olarak şu değerleri döner:
<table><tr><td>bilinmeyen (4)</td><td>bilin m e y e n (3)</td><td>bilinmeyen (2)</td><td>bilinmeyen (1)</td><td>bilinmeyen (0)</td></tr><tr><td>return<br>10 + 4*4</br></td><td>return<br>4 + 2*3</br></td><td>return<br>0 + 2*2</br></td><td>return<br>0 + 0*1</br></td><td>return 0</td></tr></table>
sonuç olarak fonksiyon 26 döner.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 38

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int n = 5;
int i = 1, j, k = 0;
int toplam = 0;
while (i <= n) {
j = 1;
while (j <= i) {
k++;
toplam += (k % 2 ? i + j : i - j);
j++;
}
i++;
}
printf("%d\n", toplam);
```
Yukarıdaki kod parçası hangi çıktıyı üretir?

Şıklar:
A) 37 | B) 45 | C) 46 | D) 56 | E) Hiçbiri

Cevap: D 56

Çözüm:
İ ve j'nin her bir değerine karşı toplam değişkeni şu şekilde değişir:
i = 1, j = 1, toplam: 2
i = 2, j = 1, toplam: 3
i = 2, j = 2, toplam: 7
i = 3, j = 1, toplam: 9
i = 3, j = 2, toplam: 14
i = 3, j = 3, toplam: 14
i = 4, j = 1, toplam: 19
i = 4, j = 2, toplam: 21
i = 4, j = 3, toplam: 28
i = 4, j = 4, toplam: 28
i = 5, j = 1, toplam: 34
i = 5, j = 2, toplam: 37
i = 5, j = 3, toplam: 45
i = 5, j = 4, toplam: 46
i = 5, j = 5, toplam: 56
Bu nedenle kod sonunda 56 değeri ekrana yazılır.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 39

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int x = 5, y = 3;
int i;
for (i = 0; i < 3; i++) {
x += y--;
y *= 2;
}
printf("%d\n", x+y);
```c
Yukarıdaki kod parçası hangi çıktıyı üretir?

Şıklar:
A) 11 | B) 12 | C) 18 | D) 25 | E) 28

Cevap: E 28

Çözüm:
Döngünün her iterasyonu sonunda x ve y değişkenlerinin değerleri şu şekilde değişir:
x=8, y=4
x=12, y=6
x=18, y=10
Buna göre döngü bittiğinde x+y toplamı 28 olur.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 40

Ackermann fonksiyonu aşağıdaki şekilde tanımlanmıştır. Fonksiyon her bir çalıştığında ekrana bir yıldız koymaktadır. Ekrana 6 yıldız basılması için Ackermann fonksiyonu nasıl çağrılmalıdır?
\[
\begin{align*}
A(0, n) &= n + 1 \\
A(m + 1, 0) &= A(m, 1) \\
A(m + 1, n + 1) &= A(m, A(m + 1, n))
\end{align*}
\]

Şıklar:
A) A(0, 1) | B) A(1, 0) | C) A(1, 1) | D) A(1, 2) | E) A(2, 1)

Cevap: D A(1, 2)

Çözüm:
Yinelemeyi daha rahat takip edebilmek için fonksiyonu aşağıdaki şekilde düzenleyebiliriz:
\[
\begin{align*}
a(0, n) &= n + 1 \\
a(m, 0) &= A(m - 1, 1) \\
a(m, n) &= A(m - 1, A(m, n - 1))
\end{align*}
\]
A(1, 2) □ A(0, A(1, 1)) □ A(1, 1) □ A(0, A(1, 0)) □ A(1, 0) □ A(0,1) □ A(0, 2) □ A(0, 3)
A(0,1) = 1+1 = 2, A(0,2) = 2+1 = 3
A(1, 2) çağrısı için A fonksiyonu toplam 6 kez çağrıldığı için ekrana 6 yıldız basılır.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 41

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

```c
int x = 1, y = 2, z = 3, i = 1, j = 1, k = 1, t = 0;
while (i <= 2) {
do {
for (k = 1; k <= 2; k++) {
if (t % 3 == 0)
t += x * y * z;
else if(t % 3 == 1)
t-= x * y * z;
else
++t;
x++;
}
j++;
} while (j <= 2);
i++;
}
```
Yukarıdaki kod parçası çalıştıktan sonra t değişkeninin değeri ne olur?

Şıklar:
A)126
B)216
C)270
D)260
E)Hiçbiri

Cevap: A 126

Çözüm:
For döngüsünün her iterasyonu başında (if öncesinde) ve sonunda (x++ ifadesinden sonra) i,j,k ve t değişkenlerinin değerleri şu şekildedir:
<table><tr><td>For döngüsünün her iterasyonu başında</td><td>For döngüsünün her iterasyonu sonunda</td></tr><tr><td>i = 1, j = 1, k = 1, t = 0<br/>i = 1, j = 1, k = 2, t = 6<br/>i = 1, j = 2, k = 1, t = 18<br/>i = 1, j = 2, k = 2, t = 36<br/>i = 2, j = 3, k = 1, t = 60<br/>i = 2, j = 3, k = 2, t = 90</td><td>i = 1, j = 1, k = 1, t = 6<br/>i = 1, j = 1, k = 2, t =18<br/>i = 1, j = 2, k = 1, t =36<br/>i = 1, j = 2, k = 2, t =60<br/>i = 2, j = 3, k = 1, t =90<br/>i = 2, j = 3, k = 2, t =126</td></tr></table>
Bu nedenle kod parçası sonunda t'nin değeri 126 olur.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 42

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıda verilen metod için metot (10) ; çalıştırıldığında çıktı aşağıdakilerden hangi olamaz?
```c
void metot(int n) {
printf("%d ", n);
if (n > 0) {
metot(rand() % (n + 1));
}
}
```

Şıklar:
A) 10 0 | B) 10 10 0 | C) 10 7 7 1 0 0 | D) 10 7 5 1 1 1 1 0 | E) 10 8 8 6 5 5 4 4 2 0

Cevap: C 10 7 7 1 0 0

Çözüm:
Metot içinde *if* koşulu *n* değişkenin değeri sadece sıfırdan büyükse yineleme yapacağı için 0 birden fazla yazılamaz.
Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 43

[36-50 soruları için açıklama]
- Soruları C programlama dili çerçevesinde cevaplayınız.
- Derleyici olarak gcc kullanıldığını varsayınız.
- Gerekli tüm başlık (header) dosyalarının verilen programa dahil edildiğini varsayınız.

---

Aşağıda verilen metod için metot (25) ; çalıştırıldığında ekrana yazılan sayıların toplamı aşağıdakilerden hangisidir?
```c
void metot(int n) {
printf("%d ", n);
if (n != 0) {
metot(-(n / abs(n)) * (abs(n) / 2));
}
}
```

Şıklar:
A) 16 | B) 17 | C) 46 | D) 47 | E) Sıfıra bölünme hatası oluşur

Cevap: B 17

Çözüm:
Programın çıktısı "25 -12 6 -3 1 0" olacağı için toplamı 17 olur. Yani