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

[GÖRSEL]
Yukarıdaki soldaki şekilde 3 doğrudan oluşan ve tek kesişim noktasına sahip bir düzenleme gösterilmiştir.
Sağdaki şekilde ise 3 doğrudan oluşan ve 3 kesişim noktasına sahip bir düzenleme gösterilmiştir. 5
doğrudan oluşan bir düzenlemede en fazla kaç kesişim noktası oluşabilir?

Şıklar:
A) 5
B) 6
C) 8
D) 10
E) 20

Cevap: D 10

Çözüm:
5 doğrudan oluşan bir düzenlemede en fazla 10 kesişim noktası oluşabilir. Bu, her bir kesişim noktası
sadece 2 doğrunun kesiştiği bir nokta olduğu durumda gerçekleşir.
Ortaokul Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 11

Bir ATM, 10 TL, 20 TL, 50 TL ve 200 TL değerindeki banknotlar (kağıt para) için dört adet yuva ile
donatılmıştır. Bu yuvalar, 4 elemanlı arr[] dizisi ile temsil edilir; arr[0] 10 TL'lik banknotların sayısını,
arr[1] 20 TL'lik banknotların sayısını tutar ve bu şekilde artarak devam eder. Makinenin algoritması, talep
edilen para tutarını sağlamak için kullanılan banknot sayısını mümkün olduğunca en aza indirmeli ve arr[]
içindeki sayıları mümkün olduğunca dengeli tutmaya çalışmalıdır. Aşağıdaki stratejilerden hangisi banknot
sayısını mümkün olduğunca en aza indirme ve dağılımı mümkün olduğunca dengede tutma amacına doğru
şekilde hizmet etmez?

Şıklar:
A) İlk olarak en yüksek mevcut değerlerdeki banknotları (200 TL'den) vermeye başla ve sadece çekilmesi
gereken miktarı tamamlamak için gerekirse daha küçük değerlerdeki banknotları kullan.
B) En küçük değerden başlayarak (10 TL) daha yüksek değerlere doğru (200 TL'ye kadar) banknotları
vermeye başla. Mümkün olduğunca her banknotu, bir sonraki daha yüksek değere geçmeden önce kullan.
C) En yüksek değerli banknotları ilk kullanmaya başla fakat mevcut değerle kalan çekilecek miktar tam
olarak eşleşemiyorsa hemen bir alt değerli banknota geç.
D) arr[]deki banknotların mevcudiyetine ve toplam çekilmesi gereken miktarına göre banknotları orantılı
olarak tahsis et.
E) Banknotları en yüksek değerden başlayarak ver ve kalan miktar mevcut değerle tam olarak eşleşemediği
zaman bir küçük banknota geç.

Cevap: B En küçük değerden başlayarak (10 TL) daha yüksek değerlere doğru (200 TL'ye kadar) banknotları
vermeye başla. Mümkün olduğunca her banknotu, bir sonraki daha yüksek değere geçmeden önce kullan.

Çözüm:
Seçenek B, toplam kullanılan banknot sayısını en azaltma etme stratejisini takip etmez. En küçük değerle
başlamak, çekilmesi gereken miktarı karşılamak için genellikle daha fazla banknota ihtiyaç duyar, bu da
kaynakların verimsiz kullanımına ve küçük, daha esnek banknotların daha hızlı tükenmesine yol açabilir.
Bu yaklaşım, genellikle büyük miktarları hızla kapsayacak şekilde büyük değerlerdeki banknotların önce
kullanılmasını öneren en iyi uygulamalarla keskin bir zıtlık oluşturur.
Ortaokul Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 15

İçinde 2 olan iki basamaklı sayılar sistematik olarak listelenebilir. Bu sayılar: 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 52, 62, 72, 82, 92'dır. Toplam 18 tane vardır.

Şıklar:
A) 10
B) 12
C) 15
D) 16
E) 18

Cevap: E 18

Çözüm:
ÇÖZÜM
İçinde 2 olan iki basamaklı sayılar sistematik olarak listelenebilir. Bu sayılar:
12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 32, 42, 52, 62, 72, 82, 92'dır. Toplam 18 tane vardır.
Ortaokul Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 17

Her sütunda herhangi bir hücrede geçilmez bir duvarın bulunduğu n×n boyutunda (4<n<256) bir satranç
tahtasında vezirler, hiçbir iki vezirin birbirini tehdit etmemesi ve hiçbir vezirin duvarların ardına
geçememesi koşuluyla yerleştirilmek istenmektedir. Bu koşulu sağlayan herhangi bir çözüm yineleme (ing:
recursion) kullanılarak bulunmalıdır. Bit işlemlerinin 2 boyutlu bir dizinin bir elemanına erişmekten daha
yavaş olmadığını varsayınız. Bu durumda aşağıdaki ifadelerden hangisi yinelemenin en az hafıza ve işlemci
kaynağı tüketecek şekilde yapılmasına olanak sağlar?
[GÖRSEL]
Şekil: Satranç tahtasının her sütununda bir adet siyah duvarlar görülmektedir.

Şıklar:
A) Her bir hücreyi boolean (mantıksal) bir değer olarak tutan 2 boyutlu (2B) bir dizi ile hangi hücrede vezir
var veya yok tutulabilir.
B) Her bir hücre için vezir var mı yok mu değeri bir bit (doğru / yanlış) olarak ifade edilebilir. n×n bir
tahtada n^2 bit olur. Her 64 bit bir tamsayı ise n^2/64 tamsayı tutmak yeterlidir.
C) Her bir hücre için vezir var mı yok mu değeri bir bit (doğru / yanlış) olarak ifade edilebilir. Her bir
sütunda bir adet duvar olacağı için (n-1)×n bit tutmak yeterli olur. Her 64 bit bir tamsayı ise (n-1)×n/64
tamsayı tutmak yeterlidir.
D) Her bir sütün için her iki vezirin hangi satırda durduğunu tutacak iki tamsayı tutulması yeterlidir.Böylece 2n tamsayı vezir yerleşimlerini tutmak için yeterli olacaktır.
E) Tüm vezirlerin x ve y koordinatları bir liste içine saklanır. Bir hücrede vezir var mı yok mu kontrolu o
hücrenin x ve y (sütün ve satır) koordinatı listede var mı bakılarak bulunur.

Cevap: D Her bir sütün için her iki vezirin hangi satırda durduğunu tutacak iki tamsayı tutulması yeterlidir.Böylece 2n tamsayı vezir yerleşimlerini tutmak için yeterli olacaktır.

Çözüm:
Her bir sütunda duvarın üstünde bir vezir ve duvarın altında bir vezir olabilir. Duvarın üstünde veya altında
birden fazla vezir olsa idi bunlar otomatik olarak birbirini tehdit eder durumda olurlardı. Eğer bir sütunda
duvar en üst veya en alt satırda ise o sütun için olan ilk tamsayı kullanılır ve ikinci tamsayı-1 değeri ile
tahta dışında olarak ifade edilir. Bu yaklaşımla tahta boyu büyüse bile sadece 2n tamsayı ile vezirler
konumlandırılabilirler. Bu yaklaşım diğer şıklardan çok daha etkindir. Doğru cevap D şıkkıdır.
Ortaokul Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 18

Hande Haziran ayında hesabındaki parasının 1/5'ini çekmiştir. Temmuz ayında kalan parasının 1/3'ünü, Ağustos ayında ise geri kalan parasının 1/4'ünüçekmiştir. Bu işlemler sonucunda Hande’nin hesabında 480TL kalmışsa ilk başlangıçtaki hesap bakiyesi nedir?

Şıklar:
A)1000
B)1200
C)1400
D)1500
E)2000

Cevap: B 1200

Çözüm:
Hande’nin başlangıçtaki parası 15X olsun. Bu paranın 1/5'i 3X olduğundan Haziran ayındaki harcamasından sonra 12X kalmıştır.Temmuz ayında bu paranın 4X’ini harcamıştır. Kalan parası 8X’dir. Ağustos’ta bu paranın 2X’ini kullanmış olup 6X parası kalmıştır.
6X=480
X=80
Buna göre başlangıçtaki parası 15X=15.80=1200TL olur.
Ortaokul Bilgisayar Olimpiyatı 2024, 1. Aşama, Soru 22

[21-30] Sorular İç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
#define N 5
int A[]= {2,0,1,1,1};
int b, t = 0;
int main()
{
for (int i = 0; i < N; ++i){
t += A[i];
b = t/(2*N);
}
printf("%d %d\n", b, t);
}
```
Yukarıdaki programın çıktısı aşağıdakilerden hangisidir?

Şıklar:
A) 0.5 4
B) 0 4
C) 1 5
D) 0.5 5
E) 0 5

Cevap: E 0 5

Çözüm:
For döngüsü içinde t değişkeni her i iterasyonunda kendi değerini A dizisinin i.elemanını ekleyerek değiştirmektedir. Bu nedenle döngü sonunda t‘nin değeri A dizisindeki tüm elemanların toplamı yani 5 olacaktır. b değişkeni ise son iterasyondaki t‘nin değerinin yani 5’in 2*5=10’a bölümüdür. b tamsayı olduğundan bu bölüm 0 olacaktır. Dolayısıyla ekrana 0 5 yazılır.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 3

Bir odanın, bir kenarı 9 birim olan kare tabanı, boyutları 2x3 ve 3x5 birim olan dikdörtgen fayanslar 
ile kaplanacaktır. Kaplama esnasında fayansların kırılarak küçültülmesi veya tabanda boş yer 
bırakılması kabul edilmemektedir. Bu kaplama işi, kullanılacak fayansların sayısı açısından kaç farklı 
şekilde yapılabilir? (Aynı sayıda fayans ile yapılan farklı kaplamalar 1 kere sayılacaktır)

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

Cevap: C 2

Çözüm:
Alanlar arasındaki ilişkiyi birinci dereceden iki bilinmeyenli bir denklemle ifade edersek 81 = 6X + 15Y olmalıdır. Bu denklemi çözen 3 farklı x,y ikilisi vardır: (1,5), (6,3) ve (11,1). Bunlardan (6,3) ve (11,1)in kaplamada kullanılabileceği kolayca gösterilebilir. (1,5) ise mümkün 
değildir. Çünkü, 5 adet 3x5 lik parça tabana koyulduğunda, kalan 6 birimlik alan  dağınık halde olmaktadır. Bu yüzden taban, fayans sayıları açısından iki farklı şekilde doldurulabilir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 4

10 katlı bir apartmanın her katında farklı sayıda oda vardır. Her katın alanı 10 birimdir. Apartmandaki en 
küçük odanın alanı 1 birimdir. Her kattaki en küçük odalar kırmızı ile boyanacaktır. Bir odanın boyanması 
için 1 birim alanda 1 birim boya kullanılması gerekiyorsa, toplamda en az kaç birim boya kullanılması 
gerekir? ( Bir katta en küçük alana sahip odadan birden fazla varsa, hepsi boyanacaktır.)

Şıklar:
A) 10 
B) 19    
C) 55    
D) 45    
E) 44

Cevap: E 44

Çözüm:
Başta verilen şartlar gereği katlardaki oda sayıları 1 den 10 a kadar değişmektedir. En küçük odanın alanını ve adedini minimize etmek aşağıdaki şekilde mümkündür. Boyanacak odalar kalın olarak gösterilmiştir.
1 oda olan kat: 10
2 oda olan kat: 9, 1
3 oda olan kat: 7, 2, 1 (8,1,1 değil)
4 oda olan kat: 5, 2, 2, 1
5 oda olan kat: 3, 2, 2, 2, 1
6 oda olan kat: 2, 2, 2, 2, 1, 1
7 oda olan kat: 2, 2, 2, 1, 1, 1, 1
8 oda olan kat: 2, 2, 1, 1, 1, 1, 1, 1
9 oda olan kat: 2, 1, 1, 1, 1, 1, 2, 1, 1, 1
10 oda olan kat: 1, 1, 1, 1, 1, 1, 1, 2,1, 1, 1
Böylece toplam boyanacak oda alanı 10+1+1+1+1+2+4+6+8+10 = 44 birimdir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 7

Aşağıdaki şekilde verilen uzun kenarı 20cm, kısa kenarı 15cm olan L şeklindeki tahta p ve q 
noktalarını birleştiren bir doğru parçası boyunca kesilecektir. Ortaya çıkan iki parça eşit alana sahip 
olacağına göre q ve r noktaları arasındaki mesafe ne kadar olmalıdır?
[GÖRSEL]

Şıklar:
A) 5 
B) 3 
C) 5/3 
D) 3/5 
E) 0

Cevap: C 5/3

Çözüm:
Şeklin toplam alanı 5*20+10*5 = 150 cm karedir. Yarısı 75 olacaktır. L nin ucundaki 5*5 lik alanı 
çıkartırsak pqr noktalarını içeren yamuğun alanı 50cmkare olmalıdır. Bu alanın formulü: 
(5+x)/2*15 tir. Yani x 5/3 olarak bulunur.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 8

Aşağıdaki düzenekte A ve B musluklarından sırasıyla C ve D kaplarına saniye 2 ve 4 birim küp su 
akmaktadır. C kabında 24 birimküp seviyesinde, D kabında ise 28 birim küp seviyesinde bir delik 
bulunmaktadır. C kabındaki delik saniyede 2 birim küp su boşaltmakta, D kabındaki ise saniyede 1 
birim küp su boşaltmaktadır. Bu deliklerden akan sular da E kabında birikmektedir. Tüm kaplar boş 
iken, aynı anda A ve B muslukları açılırsa, kaç saniye sonra E kabında eşit miktarda A ve B 
musluklarından gelen su bulunur?
[GÖRSEL]

Şıklar:
A) 5 
B) 7 
C) 12 
D) 15 
E) 17

Cevap: E 17

Çözüm:
C kabı 12 saniye, D kabı ise 7 saniye sonra akıtmaya başlar. Yani 12. saniyeye gelindiğinde E kabında 
5*1 = 5 birimküp B musluğundan gelen su birikmiş olur. Bir x saniye daha geçtiğinde kaptaki su 
miktarı 2x (A’dan gelen) + 5+x (B’den gelen) şeklinde olur. Bu durumda eşit olmaları için 2x = 5+x 
denkleminden x = 5 bulunur. Yani 12+5 = 17. saniyede farklı musluklardan gelen su miktarı eşitlenir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 9

Bir kitap satıcısının elinde sınırsız sayıda farklı kitap olduğunu varsayalım. Bu kitap satıcısı insanların daha 
fazla kitap okuyabilmesi için bir kampanya başlatmıştır. Kitap satıcısı, okuyup satıcıya vereceğiniz her 7 
kitap için size elinizdekinden farklı 1 kitabı ücretsiz olarak vermektedir. Bu kitapları da okuduktan sonra 
tekrar kitap satıcısına verebilmektesiniz. Başlangıçta elinizde 121 farklı kitabınız var ise, bu kitapları da 
dahil ederek ek bir ücret ödemeden toplamda okuyabileceğiniz farklı kitap sayısı en fazla kaç olur?

Şıklar:
A) 141 
B) 142 
C) 143 
D) 144 
E) 145

Cevap: A 141

Çözüm:
Öncelikle kitap sayısı 121’dir. Bu kitaplardan 119’u satıcıya verildiğinde size 119 / 7 = 17 yeni kitap geri 
verecektir. Ancak 121 % 7 = 2 kitap daha önce kullanılmadığı için elde 17 + 2 = 19 kitap vardır. Bu 
kitaplardan da okunmayanlar okunduktan sonra 14 kitap satıcıya verildiğinde satıcı 14 / 7 = 2 yeni kitap geri 
verecektir. Eldeki 19 % 7 = 5 kitap ile birlikte kampanyada kullanılabilecek 2 + 5 = 7 toplamda kitap vardır. 
Bu kitaplardan da okunmayanlar okunduktan sonra 7 kitap satıcıya verilir ve 7 / 7 = 1 yeni kitap alınır. 
Bundan sonra başka yeni kitap almak mümkün değildir. 
121 + 17 + 2 + 1 = 141 kitap okunabilir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 10

Bir pazarcı satmakta olduğu elmalar için bir kampanya yapmıştır. Pazarcı 1 kilo elmayı 2 TL’ye satmaktadır 
ancak elmalar 5 kilo olarak alındığında bunun ücreti 8 TL’dir. Toplamda 58 kilo elma almanız 
gerekmektedir. Daha hesaplı olması durumunda fazla elma almanızda bir sakınca yoktur. Buna göre 58 kilo 
elmayı en az kaç TL ödeyerek satıcıdan alabilirsiniz?

Şıklar:
A) 92 
B) 93 
C) 94 
D) 95 
E) 96

Cevap: C 94

Çözüm:
5 kilo elmayı kampanya ile alırsak 8 TL olmaktadır. Ancak 1 kilo elma 2TL olduğundan kampanyasız 
alırsak 5 x 2 = 10 TL olmaktadır. Bu yüzden 5’er kilo alabildiğimiz tüm durumlarda kampanyalı fiyatı tercih 
etmemiz gerekir. 
55 kiloyu kampanyalı fiyattan alırsak 55 / 5 = 11 olacaktır. 11 x 8 = 88 TL ücret olacaktır. Kalan 3 kilo elma 
için ise iki seçeneğe de bakılmalıdır. 
5 kiloluk kampanya ile alırsak 8 TL ücreti olacaktır. 1 kilo x 3 şeklinde alınırsa = 2 TL x 3 = 6 TL ücreti 
olacaktır. O yüzden kalan 3 kiloyu kampanyasız fiyattan almak daha ucuz olacaktır. 
88 TL + 6 TL  = 94 TL ödenecek en uygun fiyattır.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 11

Ahmet ve Zeynep bir sayı tahmini oyunu oynamaya karar verirler. Zeynep aklından 1 ile 100 dahil olacak şekilde bu sayılar arasında bir sayı tutacaktır. Ahmet Zeynep’in aklından tuttuğu sayının bu aralıkta olduğunu bilmektedir. Ahmet tahminde bulunduğunda Zeynep Ahmet’e sadece aklından tuttuğu sayının Ahmet’in söylediği sayıdan daha küçük olduğunu, daha büyük olduğunu ya da tahmin ettiği sayı olduğunu söyleyebilir. Oyunda yanlış bilgi verilmemektedir. Zeynep, Ahmet’e kaç tahmin hakkı istediğini sorar. Ahmet sayıyı tahmin etmek için en etkili yöntemi bulmuştur ve kaç tahmin hakkı isterse her koşulda Zeynep’in aklında tuttuğu sayıyı kesin olarak tahmin edebilir?

Şıklar:
A) 6 
B) 7 
C) 8 
D) 9  
E) 10

Cevap: B 7

Çözüm:
Ahmet’in elinde sadece Zeynep’in aklındaki sayının tahminden daha küçük, daha büyük ve tahmine eşit 
olduğu bilgisi vardır bu yüzden en akıllı strateji her zaman tam ortadaki sayıyı söylemektir. Böylece 
Ahmet’in tüm tahminleri yanlış olduğunda bile alacağı sonuç şöyle olacaktır. 
1. 50 sayısını tahmin ettiğinde daha küçük ya da daha büyük bilgisi fark etmeksizin 50 sayıdan 
kurtulmuş ve geriye 50 sayı kalmıştır. 
2. Kalan 50 sayı içerisinden ortadaki sayıyı söylediğinde tahmini yanlış olsa da 25 sayıyı daha 
eleyecektir. 
3. Kalan 25 sayı içerisinden ortadaki sayıyı söylediğinde tahmini yanlış olsa da 13 sayıyı daha 
eleyecektir. 
4. Kalan 12 sayı içerisinden ortadaki sayıyı söylediğinde tahmini yanlış olsa da 6 sayıyı daha 
eleyecektir. 
5. Kalan 6 sayı içerisinden ortadaki sayıyı söylediğinde tahmini yanlış olsa da 3 sayıyı daha 
eleyecektir. 
6. Kalan 3 sayı içerisinden ortadaki sayıyı söylediğinde tahmini yanlış olsa da 2 sayıyı daha 
eleyecektir. 
7. Kalan son sayı mecburen Zeynep’in aklından tuttuğu sayı olacaktır. 
Böylece 7 tahmin hakkı verilirse Ahmet tüm sayıları doğru tahmin edecektir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 20

5 sarı ve 6 yeşil top bulunan bir torbadan rastgele 3 top çekiliyor. Tam olarak 1 sarı top çekme olasılığı 
nedir?

Şıklar:
A)  5/11
B)  6/11
C)  5/22
D)  10/33
E)  3/11

Cevap: A 5/11

Çözüm:
11 toptan 3 top 165 şekilde seçilebilir. Bir sarı top 5 şekilde ve 2 yeşil top 15 şekilde seçilebilir. Bu yüzden cevap \( 5 \times \frac{15}{165} = \frac{5}{11} \)’dir.
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 22

[21-30] Sorular İç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 main() { 
int i, j; 
for (i = 1; i <= 5; i++) { 
for (j = 1; j <= 5; j++) { 
if (i + j == 7) { 
break; 
} 
else if(i + j == 4){ 
continue; 
} 
else if(j == i){ 
i++; 
} 
printf("%d ", i * j); 
} 
} 
} 
```
Yukarıdaki kod parçacığı çalıştırıldığında programın çıktısı aşağıdakilerden hangisi olur?

Şıklar:
A) 1 2 8 10 9 16 25 
B) 2 2 8 10 9 16 25 
C) 2 4 8 6 12 20 30 
D) 2 6 8 6 12 20 30 
E) 2 6 8 10 12 20 30

Cevap: D 2 6 8 6 12 20 30

Çözüm:
i: 1, j:1 değeri için else if(j == i) bloğu çalışır ve i 1 artar 2*1 = 2 olur, 2 değeri ekrana yazar.
i değeri 2 olmuş olur içteki döngüde bittiği için j değeri de 2 olur.
i: 2, j:2 için else if (i + j == 4) bloğu çalışır ve program içteki döngünün 1 iterasyonunu pas geçerek j'yi 1 artırır ve 3 yapar. Tekrar içteki döngüye devam eder.
i: 2, j:3 için hiçbir if bloğu çalışmaz ve 2*3 = 6 olduğundan ekrana 6 yazar. j 1 artırılarak içteki döngü başa döner.
i: 2, j:4 için hiçbir if bloğu çalışmaz ve 2*4 = 8 olduğundan ekrana 8 yazar. j 1 artırılarak içteki döngü başada döner.
i: 2, j:5 için if (i + j == 7) bloğu çalıştığı için içteki döngüyü kırarak çıkar ve dıştaki döngüye devam ederek i değeri 1 artırılır ve daha sonra program tekrar içteki döngüye i değeri 1 için başlar.
i: 3, j:1 --> için else if(i + j == 4) bloğu çalışır ve program içteki dönünün 1 iterasyonunu pas geçerek j'yi 1 artırır v 2 yapar. Tekrar içteki döngüye devam eder.
i: 3, j:2 --> 6 için hiçbir if bloğu çalışmaz ve 3*2 = 6 olduğundan ekrana 6 yazar. j 1 artıırılarak içteki döngü başa döner.
\[
i: 3, j:3 --> değeri için else if(j == i) bloğu çalışır ve i l artar 4*3 = 12 olur, 12 değeri ekrana yazar. Bir sonraki iterasyonda j 4 olur. \]
\[
i: 4, j:4 --> değeri için else if(j == i) bloğu çalışır ve l artar 5*4 = 20 olur, 20 değeri ekrana yazar. Bir sonraki iterasyonda j 5 olur. \]
\[
i: 5, j:5 --> değeri için else if(j == i) bloğu çalışır ve 1 artar 6*5 = 30 olur, 30 değeri ekrana yazar. Bir sonraki iterasyonda j 6 olur. İçteki döngü sonlandırılır. Daha sonrasında i değeri de 7 olur ve dıştaki döngüde sonlanmış olur. \]
\[
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 24

[21-30] Sorular İç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 main() { 
char *word = "olimpiyat"; 
int len = (int)strlen(word); 
for(int i=1; i<=len-3; i++){ 
switch (i) { 
case 1: 
printf("%c", word[len-i++]); 
case 2: 
printf("%c", word[len-i*i]); 
case 3: 
printf("%c", word[i]); 
break; 
case 4: 
printf("%c", word[len-i+1]); 
break; 
case 5: 
printf("%c", word[len-1]); 
default: 
printf("%c", word[1]); 
break; 
} 
} 
return 0; 
} 
```
Yukarıdaki kod parçası çalıştığında ekrana yazdırılan mesaj ne olur?

Şıklar:
A) tiimytll 
B) ltiimytl 
C) oapliiao 
D) apliiaoo 
E) tmytl

Cevap: A tiimytll

Çözüm:
strlen(word) fonksiyonu kelimenin uzunluğunu bulur. len değeri 9 olmuş olur. Böylece döngü i=1 
değeri için başlayıp i<=6 olana kadar devam eder. 
switch(i) değeri ilk iterasyonda switch(1) olarak çağırılır. Case 1 çalışır ancak case içerisinde break 
olmadığı için case 1, 2 ve 3 çalışmış olur. 
word[len-i++] = word[9-1] olur ve i değeri 2’ye yükseltilmiş olur. 
word[8] kelimenin 8. harfidir ve C dilinde karakter sıraları 0 dan başladığı için word[8] aslında 9. 
kelimeyi göstermektedir. 
word[8] = t 
Case 2 için word[len-i*i] = word[9-2*2] = word[9-4] = word[5] yani kelimenin 6. harfidir. 
word[5] = i 
Case 3 için word[i] = word[2] yani kelimenin 3. harfidir. 
word[2] = i  
Daha sonra break ifadesi çalışır ve for döngüsünün ilk iterasyonu bitmiş olur. i değeri 1 artırılarak 3 
olur. Böylece Case 3 çalışmış olur. Break ifadesi olduğu için sadece case 3 çalışır. 
Case 3: word[i] = word[3] yani kelimenin 4. harfi 
word[3] = m 
Daha sonra break ifadesi çalışır ve for döngüsünün ikinci iterasyonu bitmiş olur. i değeri 1 artırılarak 4 
olur. Böylece Case 4 çalışmış olur. Break ifadesi olduğu için sadece case 4 çalışır. 
Case 4: word[len-i+1]= word[9-4+1] = word[6] yani kelimenin 7. harfi 
word[6] = y 
Daha sonra break ifadesi çalışır ve for döngüsünün üçüncü iterasyonu bitmiş olur. i değeri 1 artırılarak 
5 olur. Böylece Case 5 çalışmış olur, break ifadesi olmadığı için default case aynı zamanda 
çalışacaktır. 
Case 5: word[len-1] = word[9-1] = word[8] yani kelimenin 9. harfi 
word[8] = t 
Default:   
word[1] = l 
Daha sonra break ifadesi çalışır ve for döngüsünün üçüncü iterasyonu bitmiş olur. i değeri 1 artırılarak 
6 olur. Böylece Default case çalışmış olur ve döngü sonlanır. 
Default:  
word[1] = l
Ortaokul Bilgisayar Olimpiyatı 2025, 1. Aşama, Soru 28

[21-30] Sorular İç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 şehri ile B şehri arasındaki mesafe 1000 km’dir. A şehrinden B şehrine giderken en fazla 3 defa yakıt alma hakkınız bulunmaktadır. Benzin istasyonlarının A şehrine mesafeleri [400, 100, 950, 850, 600, 500, 700, 200] olarak verilmiştir. A şehrinden tam dolu depo ile yola çıkarak B şehrine ulaşmak için, aşağıdaki şıklardan hangisi gereken minimum depo kapasitesini en verimli bir şekilde bulmak için kullanılacak algoritmanın bir adımı değildir?

Şıklar:
A) Şehir B’nin (1000. km) de istasyon listesine eklenmesi 
B) Benzin istasyonlarının mesafelerini küçükten büyüğe sıralamak 
C) Belirli bir kapasiteyle hedefe ulaşılıp ulaşılamayacağını test eden bir fonksiyon yazmak 
D) İkili arama aralığını belirlemek için 8 benzin istasyonuna ait tüm kombinasyonları denemek 
E) İkili arama ile minimum kapasiteyi aramak

Cevap: D İkili arama aralığını belirlemek için 8 benzin istasyonuna ait tüm kombinasyonları denemek

Çözüm:
İkili arama için başlangıç değeri genellikle 1 (veya iki nokta arasındaki minimum mesafe) ve bitiş değeri 
toplam mesafe olan 1000 km olarak alınabilir. D şıkkında yer alan "kombinasyonları deneme" yaklaşımı, 
verimli algoritmaların bir parçası değildir. Diğer adımlar, ikili arama temelli çözümün doğal ve gerekli 
bileşenleridir.