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

## [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
if (x <= 200)
    if (x < 100)
        if (x <= 0)
            printf("X\n");
        else
            printf("Y\n");
    else
        printf("Z\n");
else
    printf("W\n");
```

Yukarıda verilen kod parçacığı, x tamsayı değişkeninin alacağı hangi değer aralığında ekrana 'Z' karakterini basar?

Şıklar:
A) O < x < 100 | B) 100 <= x <= 200 | C) x <= 0 | D) x > 200 | E) 100 < x <= 200

Cevap: B 100 <= x <= 200

Çözüm:
Kodun 'Z' yazdırması için x'in 2 farklı şartı sağlaması lazım:
- x <= 200
- x >= 100 (else kısmına girmesini istediğimizden if'in içerisindeki ifadenin tersini yazıyoruz.)
Birleştirirsek 100 <= x <= 200 elde ederiz.
Bilgisayar Olimpiyatı 2017, 1. Aşama, Soru 49

## [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.

---

int gdy(int n, int y) {
    int a;
    if (y > n / 2) {
        a = n / 2;
    } else {
        a = y;
    }
    while (a > 0) {
        if (n % a == 0) {
            return a;
        }
        a--;
    }
    return 1;
}
int main() {
    int sonuc = gdy(123, 45);
    printf("%d\n", sonuc);
    return 0;
}

Yukarıda verilen program hangi çıktıyı üretir?

Şıklar:
A) 1 | B) 41 | C) 45 | D) 123 | E) 61

Cevap: B 41

Çözüm:
Programı işletelim:
• gdy(123, 45).
• İlk if'e geldiğinde else kısmına girer.
• n/2 = 61, y=45 o zaman a = 45 olur.
• İlk döngüden sonra a = 41(45'ten küçük 123'ü ilk bölen sayı) olur.
• İf'e girer ve a = 41 döner.
Bilgisayar Olimpiyatı 2017, 1. Aşama, Soru 50

## [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.

---

struct Node {
    int value;
    struct Node *next;
};

int main() {
    struct Node n1, n2, n3, n4, n5;
    n1.value = 1;
    n2.value = 2;
    n3.value = 3;
    n4.value = 4;
    n5.value = 5;
    n1.next = &n2;
    n2.next = &n3;
    n3.next = &n4;
    n4.next = &n5;
    n5.next = &n3;
    printf("%d\n", n4.next->next->value);
    return 0;
}

Yukarıda verilen program hangi çıktıyı üretir?

Şıklar:
A) Derleme zamanı hatası oluşur. | B) 1 | C) 2 | D) 3 | E) 5

Cevap: D 3

Çözüm:
Hepsi bir value alır n5 haricindekilerin next'i bir sonrakini gösterir. n5'in nexti ise (n1.next(n2)->next)(n3) olur. (n4.next(n5)->next)(n3)->value(3) olur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 1

## [1-5 soruları için açıklama]
Her birinin içinde farklı sayıda çakıl taşı bulunan soldan sağa doğru bir çizgide yere sabitlenmiş N tane metal kutumuz 
olduğunu düşünelim. Herhangi iki kutunun içinde aynı sayıda çakıl taşı bulunmamaktadır ve metal kutular hareket 
ettirilememektedir. Amacımız çakıl taşlarının kutulara dağılım sayılarını değiştirmeden, soldan sağa gittiğimizde kutulardaki 
çakıl taşları sayıları küçükten büyüğe artacak şekilde çakıl taşlarının kutularda bulunmasını sağlamaktır. Elimizde kağıt 
kalem olmadığından ve çakıl taşlarını kutular dışında bir yerde bekletirsek oluşabilecek karışıklığı engellemek için 
aşağıdaki gibi bir yöntem (algoritma) kullanmaya karar veriyoruz.
2.  Soldan sağa giderek ardışık bütün kutu çiftlerine bak. Yani sırasıyla 1. ve 2. kutu, 2. ve 3. kutu, ...., N-1. ve N. kutuya 
bak. Bu sırada bir çift kutudan bir sonraki çifte geçmeden önce, eğer bu kutu çiftinde soldaki kutu sağdaki kutudan 
daha fazla çakıl taşı içeriyorsa bu iki kutudaki çakıl taşı sayıları arasındaki fark kadar çakıl taşını soldaki kutudan sağdaki 
kutuya aktar.
2.  1. adımda eğer herhangi iki kutu arasında çakıl taşı aktarması yaptı isen 1. adıma geri dön ve en baştan kutuların sonuna 
kadar aynı adımı tekrar et. Eğer 1. adımda bir çakıl taşı aktarması yapmadı isen zaten artık kutulardaki çakıl taşları soldan 
sağa küçükten büyüğe yerleşmiş demektir.

---

Eğer başlangıçta 7 tane metal kutuda soldan sağa 9, 4, 5, 3, 6, 1, 2 tane çakıl taşı varsa algoritmamızın 
birinci turu sonunda yani kutuları soldan sağa bir kez geçtiğimizde toplam kaç tane kutu ikilisi arasında 
çakıl taşı değişimi yapmış oluruz?

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

Cevap: E 6

Çözüm:
Birinci turda 9 çakıl taşı bulunan kutu en fazla çakıl taşına sahip olduğundan, ikili ikili karşılaştırarak sağa doğru 
ilerlediğimizde her seferinde 9 çakıl taşı olan kutu sağdakinden büyük olacak ve çakıl taşı değişimi olacaktır, 7 kutu için 
toplam 6 tane ikili bulunduğundan doğru cevap E şıkkı olacaktır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 2

## [1-5 soruları için açıklama]
Her birinin içinde farklı sayıda çakıl taşı bulunan soldan sağa doğru bir çizgide yere sabitlenmiş N tane metal kutumuz 
olduğunu düşünelim. Herhangi iki kutunun içinde aynı sayıda çakıl taşı bulunmamaktadır ve metal kutular hareket 
ettirilememektedir. Amacımız çakıl taşlarının kutulara dağılım sayılarını değiştirmeden, soldan sağa gittiğimizde kutulardaki 
çakıl taşları sayıları küçükten büyüğe artacak şekilde çakıl taşlarının kutularda bulunmasını sağlamaktır. Elimizde kağıt 
kalem olmadığından ve çakıl taşlarını kutular dışında bir yerde bekletirsek oluşabilecek karışıklığı engellemek için 
aşağıdaki gibi bir yöntem (algoritma) kullanmaya karar veriyoruz.
2.  Soldan sağa giderek ardışık bütün kutu çiftlerine bak. Yani sırasıyla 1. ve 2. kutu, 2. ve 3. kutu, ...., N-1. ve N. kutuya 
bak. Bu sırada bir çift kutudan bir sonraki çifte geçmeden önce, eğer bu kutu çiftinde soldaki kutu sağdaki kutudan 
daha fazla çakıl taşı içeriyorsa bu iki kutudaki çakıl taşı sayıları arasındaki fark kadar çakıl taşını soldaki kutudan sağdaki 
kutuya aktar.
2.  1. adımda eğer herhangi iki kutu arasında çakıl taşı aktarması yaptı isen 1. adıma geri dön ve en baştan kutuların sonuna 
kadar aynı adımı tekrar et. Eğer 1. adımda bir çakıl taşı aktarması yapmadı isen zaten artık kutulardaki çakıl taşları soldan 
sağa küçükten büyüğe yerleşmiş demektir.

---

Eğer başlangıçta 7 tane metal kutuda soldan sağa 9, 4, 5, 3, 6, 1, 2 tane çakıl taşı varsa algoritmamızın bi
rinci turu sonunda yani kutuları soldan sağa bir kez geçtiğimizde toplam kaç tane çakıl taşını bir kutudan 
diğerine taşımış oluruz? (Not: Aynı çakıl taşı birden fazla kez taşınabilir, bu soruda her taşımayı ayrı ayrı 
saymamız isteniyor.)

Şıklar:
A)  5                                      B)  12                                      C)  30                                      D)  33                                       E)  45

Cevap: D 33

Çözüm:
Birinci turda 9 çakıl taşı bulunan kutu en fazla çakıl taşına sahip olduğundan, ikili ikili karşılaştırarak sağa doğru 
ilerlediğimizde her seferinde 9 çakıl taşı olan kutu sağdakinden büyük olacak ve çakıl taşı değişimi olacaktır. Sırasıyla bir 
kutudan diğerine taşınan  çakıl taşı 9-4,  9-5, 9-3, 9-6, 9-1 ve 9-2 olacaktır. Bu sayıları topladığımızda 5+4+6+3+8+7=33 
yani doğru cevap olan D şıkkını bulmuş oluruz.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 3

## [1-5 soruları için açıklama]
Her birinin içinde farklı sayıda çakıl taşı bulunan soldan sağa doğru bir çizgide yere sabitlenmiş N tane metal kutumuz 
olduğunu düşünelim. Herhangi iki kutunun içinde aynı sayıda çakıl taşı bulunmamaktadır ve metal kutular hareket 
ettirilememektedir. Amacımız çakıl taşlarının kutulara dağılım sayılarını değiştirmeden, soldan sağa gittiğimizde kutulardaki 
çakıl taşları sayıları küçükten büyüğe artacak şekilde çakıl taşlarının kutularda bulunmasını sağlamaktır. Elimizde kağıt 
kalem olmadığından ve çakıl taşlarını kutular dışında bir yerde bekletirsek oluşabilecek karışıklığı engellemek için 
aşağıdaki gibi bir yöntem (algoritma) kullanmaya karar veriyoruz.
2.  Soldan sağa giderek ardışık bütün kutu çiftlerine bak. Yani sırasıyla 1. ve 2. kutu, 2. ve 3. kutu, ...., N-1. ve N. kutuya 
bak. Bu sırada bir çift kutudan bir sonraki çifte geçmeden önce, eğer bu kutu çiftinde soldaki kutu sağdaki kutudan 
daha fazla çakıl taşı içeriyorsa bu iki kutudaki çakıl taşı sayıları arasındaki fark kadar çakıl taşını soldaki kutudan sağdaki 
kutuya aktar.
2.  1. adımda eğer herhangi iki kutu arasında çakıl taşı aktarması yaptı isen 1. adıma geri dön ve en baştan kutuların sonuna 
kadar aynı adımı tekrar et. Eğer 1. adımda bir çakıl taşı aktarması yapmadı isen zaten artık kutulardaki çakıl taşları soldan 
sağa küçükten büyüğe yerleşmiş demektir.

---

Eğer başlangıçta 7 tane metal kutuda soldan sağa 9, 4, 5, 3, 6, 1, 2 tane çakıl taşı varsa algoritmamız toplam kaç turda çakıl taşlarını küçükten büyüğe yerleştirme işini bitirmiş oluruz? (Hiç çakıl taşı değişimi yapılmayan son kontrol turunu toplam tur sayısına dahil etmeyi unutmayınız)

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

Cevap: E 6

Çözüm:
Birinci tur sonunda kutularda soldan sağa 4, 5, 3, 6, 1, 2, 9 çakıl taşı bulunur. İkinci tur sonunda kutularda soldan sağa 4, 3, 5, 1, 2, 6, 9 çakıl taşı bulunur. Üçüncü tur sonunda kutularda soldan sağa 3, 4, 1, 2, 5, 6, 9 çakıl taşı bulunur. Dördüncü tur sonunda kutularda soldan sağa 3, 1, 2, 4, 5, 6, 9 çakıl taşı bulunur. Beşinci tur sonunda kutularda soldan sağa 1, 2, 3, 4, 5, 6, 9 çakıl taşı bulunun. Altıncı turda kutular arası hiç bir çakıl taşı değişimi yapmadığımız için bu tur sonunda işlem sonlanmış olur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 4

## [1-5 soruları için açıklama]
Her birinin içinde farklı sayıda çakıl taşı bulunan soldan sağa doğru bir çizgide yere sabitlenmiş N tane metal kutumuz 
olduğunu düşünelim. Herhangi iki kutunun içinde aynı sayıda çakıl taşı bulunmamaktadır ve metal kutular hareket 
ettirilememektedir. Amacımız çakıl taşlarının kutulara dağılım sayılarını değiştirmeden, soldan sağa gittiğimizde kutulardaki 
çakıl taşları sayıları küçükten büyüğe artacak şekilde çakıl taşlarının kutularda bulunmasını sağlamaktır. Elimizde kağıt 
kalem olmadığından ve çakıl taşlarını kutular dışında bir yerde bekletirsek oluşabilecek karışıklığı engellemek için 
aşağıdaki gibi bir yöntem (algoritma) kullanmaya karar veriyoruz.
2.  Soldan sağa giderek ardışık bütün kutu çiftlerine bak. Yani sırasıyla 1. ve 2. kutu, 2. ve 3. kutu, ...., N-1. ve N. kutuya 
bak. Bu sırada bir çift kutudan bir sonraki çifte geçmeden önce, eğer bu kutu çiftinde soldaki kutu sağdaki kutudan 
daha fazla çakıl taşı içeriyorsa bu iki kutudaki çakıl taşı sayıları arasındaki fark kadar çakıl taşını soldaki kutudan sağdaki 
kutuya aktar.
2.  1. adımda eğer herhangi iki kutu arasında çakıl taşı aktarması yaptı isen 1. adıma geri dön ve en baştan kutuların sonuna 
kadar aynı adımı tekrar et. Eğer 1. adımda bir çakıl taşı aktarması yapmadı isen zaten artık kutulardaki çakıl taşları soldan 
sağa küçükten büyüğe yerleşmiş demektir.

---

Eğer başlangıçta 8 tane metal kutuda soldan sağa 7, 5, 8, 9, 4, 3, 6, 2 tane çakıl taşı varsa algoritmamızın birinci turu sonunda yani kutuları soldan sağa bir kez geçtiğimizde toplam kaç tane kutu ikilisi arasında çakıl taşı değişimi yapmış oluruz?

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

Cevap: C 5

Çözüm:
Birinci turda 5-7 arasında ve 9-4, 9-3, 9-6, 9-2 kutuları arasında çakıl taşı değişimi yapılmış olur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 5

## [1-5 soruları için açıklama]
Her birinin içinde farklı sayıda çakıl taşı bulunan soldan sağa doğru bir çizgide yere sabitlenmiş N tane metal kutumuz 
olduğunu düşünelim. Herhangi iki kutunun içinde aynı sayıda çakıl taşı bulunmamaktadır ve metal kutular hareket 
ettirilememektedir. Amacımız çakıl taşlarının kutulara dağılım sayılarını değiştirmeden, soldan sağa gittiğimizde kutulardaki 
çakıl taşları sayıları küçükten büyüğe artacak şekilde çakıl taşlarının kutularda bulunmasını sağlamaktır. Elimizde kağıt 
kalem olmadığından ve çakıl taşlarını kutular dışında bir yerde bekletirsek oluşabilecek karışıklığı engellemek için 
aşağıdaki gibi bir yöntem (algoritma) kullanmaya karar veriyoruz.
2.  Soldan sağa giderek ardışık bütün kutu çiftlerine bak. Yani sırasıyla 1. ve 2. kutu, 2. ve 3. kutu, ...., N-1. ve N. kutuya 
bak. Bu sırada bir çift kutudan bir sonraki çifte geçmeden önce, eğer bu kutu çiftinde soldaki kutu sağdaki kutudan 
daha fazla çakıl taşı içeriyorsa bu iki kutudaki çakıl taşı sayıları arasındaki fark kadar çakıl taşını soldaki kutudan sağdaki 
kutuya aktar.
2.  1. adımda eğer herhangi iki kutu arasında çakıl taşı aktarması yaptı isen 1. adıma geri dön ve en baştan kutuların sonuna 
kadar aynı adımı tekrar et. Eğer 1. adımda bir çakıl taşı aktarması yapmadı isen zaten artık kutulardaki çakıl taşları soldan 
sağa küçükten büyüğe yerleşmiş demektir.

---

Eğer başlangıçta 8 tane metal kutuda soldan sаğа 7, 5, 8, 9, 4, 3, 5, 6, 2 tane çakıl taşı varsa algoritmamız toplam kаç turda çakıl taşlarını küçükten büyüğе yerleştirme işini bitirmiş oluruz?

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

Cevap: D 8

Çözüm:
Birinci tur sonunda kutularda soldan sağa 5, 7, 8, 4, 3, 6, 2, 9 çakıl taşı bulunur. İkinci tursonunda kutularda soldan sağa 5, 7, 4, 3, 6, 2, 8, 9 çakıl taşı bulunur. Üçüncü tur sonundakutularda soldan sağa 5, 4, 3, 6, 2, 7, 8, 9 çakıl taşı bulunur. Dördüncü tur sonundakutularda soldan sağa 4, 3, 5, 2, 6, 7, 8, 9 çakıl taşı bulunur. Beşinci tur sonundakutularda soldan sağa 3, 4, 2, 5, 6, 7, 8, 9 çakıl taşı bulunun. Altıncı tur sonundakutularda soldan sağa 3, 2, 4, 5, 6, 7, 8, 9 çakıl taşi bulunur. Yedinci tur sonundakutularda soldan sağa 2, 3, 4, 5, 6, 7, 8, 9 çакıl taşı bulunur. Sekizinci turda kutular arası hiç bir çakıl taşı değişimi yапмадиğımız için bu tur sonunda işlem sonlanmış olur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 11

\( x = \sqrt{6} + \sqrt{6} + \sqrt{6} + \sqrt{6} \)  ...... fadesinde sonsuz sayıda karekök işlemi bulunmaktadır ve x pozitiftir. Buna göre x kaçtır?

Şıklar:
A) √6 | B) 3 | C) \( 1+\sqrt{6} \) | D) 6 | E) \( 3\sqrt{2} \)

Cevap: B 3

Çözüm:
İki tarafın da karesini alırsak ve ifade sonsuz uzunlukta olduğu için  \( 6 + x = x^{2} \)  dir. Yani  \( x^{2} - x - 6 = O \)  dir. Bu denklem de  \( (x - 3)(x + 2) = O \)  şeklinde yazılabilir. x pozitif olduğu için cevap 3 olacaktır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 12

x > 0,  \( x^{2} = 2^{128} \)  ve  \( x^{x} = 2^{y} \)  ise y'nin değeri kaçtır?

Şıklar:
A) 2 | B) \( 2^{22} \) | C) \( 2^{64} \) | D) \( 2^{70} \) | E) \( 2^{128} \)

Cevap: D \( 2^{70} \)

Çözüm:
x>O ise x'in değeri 264 olacaktır.  \( (2^{64})^{2^{64}} = 2^{2^{6} \cdot 2^{64}} = 2^{70} = y' \)  dir. Bu durumda y,  \( 2^{70} \)  olacaktır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 13

MN ve KL iki basamaklı iki sayıyı, MMM de üç basamaklı bir sayıyı ifade etmektedir. Bu üç sayı arasında MN + KL = MMM ilişkisi olduğuna göre K kaçtır?

Şıklar:
A) 9 | B) 7 | C) 3 | D) 1 | E) Bu bilgilerle bulunamaz.

Cevap: A 9

Çözüm:
İki basamaklı iki sayının toplamı 222,333,444, … ,999’dan biri olamaz. Dolayısıyla MMM, 111’dir ve M de 1’dir. Buna göre 
aşağıdaki denklemi yazabiliriz. 
10M + N + 10K + L = 100M + 10M + M
N + 10K + L = 101M
N + 10K + L = 101
En son denklemi sağlayabilmek, harfler tek basamaklı birer rakamı ifade ettiği için, ancak K 9 olursa mümkün olabilir.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 14

Aşağıda gösterilen ABC eşkenar üçgeninde |AE| = 2, |EC| = 4'tür. BDEC yamuğunun alanı kaçtır?
[GÖRSEL]

Şıklar:
A) \(4\sqrt{3}\) | B) \(12\sqrt{3}\) | C) 12 | D) 8 | E) \(8\sqrt{3}\)

Cevap: E \(8\sqrt{3}\)

Çözüm:
DE, BC'ye paralel olduğu için ADE de bir eşkenar üçgendir ve yüksekliği \(\sqrt{3}\)'tür. Bu durumda BDEC yamuğunun yüksekliği de \(2\sqrt{3}\) olacaktır. |BC|=6'dir ve |DE|=2'dir. Bu durumda yamuğun alanı (BC+HDE)/2 * 2 \(\sqrt{3}\)'den \(8\sqrt{3}\) olarak bulunur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 15

Rastgele seçilen 3 basamaklı bir sayının rakamlarından en az birinin 6 olma olasılığı kaçtır?

Şıklar:
A) 1/10 | B) 1/6 | C) 27/100 | D) 18/25

Cevap: D 18/25

Çözüm:
6 içermeyen bütün 3 basamaklı sayılar, (ilk rakam O olamayacağı için) \(8 \times 9 \times 9 = 648\) tanedir. Toplam 900 adet de üç basamaklı sayı olduğu için altı içeren sayılar 900 - 648 = 252 tanedir. Bu durumda cevap 252/900 = 7/25 olacaktır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 16

(x-1)(x-3)(x-5)...(x-65) < O eşitsizliğini sağlayan kaç pozitif x vardır?

Şıklar:
A) 11 | B) 15 | C) 16 | D) 21 | E) 33

Cevap: C 16

Çözüm:
x < 65'tir, aksi takdirde ifadenin sonucu pozitif olacaktır. Bütün tek sayılar için denklemin değeri O'dır, dolayısıyla x çift olmalıdır. İfadede toplam 33 adet çarpma bulunmaktadır.
x=2 için, 1 pozitif, 32 negatif sayının çarpımı pozitif. Eşitsizlik sağlanmaz.
x=4 için, 2 pozitif, 31 negatif sayının çarpımı negatiftir. Eşitsizlik sağlanır.
x=6 için, 3 pozitif, 30 negatif sayının çarpımı pozitif. Eşitsizlik sağlanılmaz.
x=8 için, 4 pozitif, 29 negatif sayının çarpımı negatiftir. Eşitsizlik sağılanır.
Bu şekilde devam edilirse, eşitsizliğin 4 ve 4'ün katları için sağlandığı görülecektir. Dolayısıyla x=4,8,12,16,...,64 olmak üzere eşitsizliği sağlayan toplam 16 değer vardır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 17

## [17-20] sorular için açıklama
1,2,3,4 ve 5 rakamları kullanılarak üretilecek 5 basamaklı sayılardan, aşağıdaki kurallara uyanlara güzel sayı diyelim.
• Güzel sayıların bütün rakamları birbirinden farklıdır.
• Güzel sayıların binler basamağındaki rakam, onbinler basamağındaki rakamın 2 katıdır.
• Güzel sayıların yüzler basamağındaki rakam, birler basamağındaki rakamdan küçüktür.
2. koşul gereği güzel sayılar için iki durum geçerlidir. Sayılar, A,B,C,D,E ve F diğer rakamlar olmak üzere, 12ABC veya 24DEF şeklinde olabilir. Ayrıca, son koşul gereği A<C ve D<F'dir.

---

Birler basamağı 3 olan bir güzel sayı için hangisi doğrudur?

Şıklar:
A) Onbinler basamağı 4'tür. | B) Binler basamağı 1'dir. | C) Binler basamağı 2'dir. | D) Onlar basamağı 5'dir. | E) Onlar basamağı 4'tür.

Cevap: D Onlar basamağı 5'dir.

Çözüm:
Birler basamağının 3 olması 12ABC durumunda geçerli olamaz, çünkü bu durumda C 3'tür, fakat A<C'yi sağlayacak bir A yoktur. İkinci durumda da F'nin 3 olması durumunda D sadece 1 olabilir. Bu durumda E (yani onlar basamağı) de 5 olacaktır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 18

## [17-20] sorular için açıklama
1,2,3,4 ve 5 rakamları kullanılarak üretilecek 5 basamaklı sayılardan, aşağıdaki kurallara uyanlara güzel sayı diyelim.
• Güzel sayıların bütün rakamları birbirinden farklıdır.
• Güzel sayıların binler basamağındaki rakam, onbinler basamağındaki rakamın 2 katıdır.
• Güzel sayıların yüzler basamağındaki rakam, birler basamağındaki rakamdan küçüktür.
2. koşul gereği güzel sayılar için iki durum geçerlidir. Sayılar, A,B,C,D,E ve F diğer rakamlar olmak üzere, 12ABC veya 24DEF şeklinde olabilir. Ayrıca, son koşul gereği A<C ve D<F'dir.

---

Bir güzel sayının yüzler basamağının 1 olmadığı biliniyorsa hangisi yanlıştır?

Şıklar:
A) Binler basamağı 2 olabilir. | B) Onlar basamağı 1 olabilir. | C) Onbinler basamağı 2 olabilir. | D) Yüzler basamağı 3 olabilir. | E) Birler basamağı 3 olabilir.

Cevap: E Birler basamağı 3 olabilir.

Çözüm:
Yüzler basamağı 1 değilse, 24DEF durumu 24315 olmak zorundadır (D<F koşulu). 12ABC durumu için de C'nin 3 olmayacağını kesin olarak söyleyebiliriz (A<C koşulu). Dolayısıyla iki durumda da birler basamağı 3 olamaz. Diğer şıkların hepsi olabilecek durumlardır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 19

## [17-20] sorular için açıklama
1,2,3,4 ve 5 rakamları kullanılarak üretilecek 5 basamaklı sayılardan, aşağıdaki kurallara uyanlara güzel sayı diyelim.
• Güzel sayıların bütün rakamları birbirinden farklıdır.
• Güzel sayıların binler basamağındaki rakam, onbinler basamağındaki rakamın 2 katıdır.
• Güzel sayıların yüzler basamağındaki rakam, birler basamağındaki rakamdan küçüktür.
2. koşul gereği güzel sayılar için iki durum geçerlidir. Sayılar, A,B,C,D,E ve F diğer rakamlar olmak üzere, 12ABC veya 24DEF şeklinde olabilir. Ayrıca, son koşul gereği A<C ve D<F'dir.

---

Aşağıdakilerden hangisi, sırasıyla, bir güzel sayının yüzler ve onlar basamağı olamaz?

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

Cevap: B 4,5

Çözüm:
Şıklara bakarsak, 12345 bir güzel sayıdır (A şıkkı), 24153 güzel sayıdır (C şıkkı), 12354 güzel sayıdır (D şıkkı) ve 24315 bir güzel sayıdır (E şıkkı). B şıkkı için bir güzel sayı bulunamamaktadır.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 20

## [17-20] sorular için açıklama
1,2,3,4 ve 5 rakamları kullanılarak üretilecek 5 basamaklı sayılardan, aşağıdaki kurallara uyanlara güzel sayı diyelim.
• Güzel sayıların bütün rakamları birbirinden farklıdır.
• Güzel sayıların binler basamağındaki rakam, onbinler basamağındaki rakamın 2 katıdır.
• Güzel sayıların yüzler basamağındaki rakam, birler basamağındaki rakamdan küçüktür.
2. koşul gereği güzel sayılar için iki durum geçerlidir. Sayılar, A,B,C,D,E ve F diğer rakamlar olmak üzere, 12ABC veya 24DEF şeklinde olabilir. Ayrıca, son koşul gereği A<C ve D<F'dir.

---

2'ye tam bölünen kaç tane güzel sayı vardır?

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

Cevap: D 1

Çözüm:
24DEF durumunda bir çift sayı yoktur. Çünkü D,E ve F için sadece 1,3 ve 5 sayıları kalmıştır. Dolayısıyla 12ABC durumuna bakmamız gerekir. Bu durumda da, çift olabilmesi için C 4 olmalıdır. Bundan dolayı, A 3, B de 5 olmak zorundadır. Sonuç olarak 2'ye tam bölünen tek güzel sayı 12354'tür.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 21

[21-30] 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 main() {
int i = 7;
int b = i++;
int c = --b;
int d = c--;
int e = ++d;
int f = e--;
printf("%d", f);
return 0;
}
```

Yukarıdaki program için hangisi doğrudur?

Şıklar:
A) Çıktı olarak 6 üretir. | B) Çıktı olarak 7 üretir. | C) Çıktı olarak 8 üretir. | D) Derleme-zamanı hatası verir. | E) Hiçbiri

Cevap: B Çıktı olarak 7 üretir.

Çözüm:
b=i++; şeklideki atamalarda 'in'in şu andaki değeri b'ye atılır, daha sonra 'in'in değeri 1 arttırılır. Aynı durum d=c--; formatındaki atamalar için de geçerlidir. Diğer taraftan, e=++f; ve c=--b; ifadelerinde ise önce 'f'nin değeri 1 arttırılır (b'nin değeri 1 azaltılır) ve daha sonra atama yapılır. Buna göre ifadeleri sırası ile çalıştırılarak, verilen kod ekrana 7 çıktısı üretir.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 22

[21-30] 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 main() {
int i = 7;
float c = (float) (i/2);
printf("%.1f", c);
return 0;
}
```

Yukarıdaki program için hangisi doğrudur?

text</td><td>E) Çalışma-zamanı hatası verir.

Şıklar:
A) Ekrana 3.0 yazar. | B) Ekrana 3.5 yazar. | C) Ekrana hiçbir şey yazmaz. | D) Derleme-zamanı hatası verir.

Cevap: A Ekrana 3.0 yazar.

Çözüm:
Bir ifade değerlendirilirken öncelikli olarak parantezin içi yapılır. Yani, (float)(i/2) 'de önce tam sayı bölümü yapılır daha sonra çıkan sonuç float'a çevrilir. Bunun sonucuna c'de 3.0 değeri oluşur.
Bilgisayar Olimpiyatı 2018, 1. Aşama, Soru 23

[21-30] 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 main() {
    int i = 0;
    int j = 1;
    int k = 2;
    i += k;
    j -= i;
    k /= j;
    printf("%d", i+j+k);
}
```

Yukarıdaki program için hangisi doğrudur?

Şıklar:
A) Ekrana -2 yazar. | B) Ekrana -1 yazar. | C) Ekrana 0 yazar. | D) Ekrana 1 yazar.

Cevap: B Ekrana -1 yazar.

Çözüm:
Sorudaki i+=k; j-=i; k/=j; ifadeleri aşağıdaki atamalara eşittir.
i = i + k;
j = j - i;
k = k / j;
buna göre i,j,k değerleri sırasıyla 2.-1, -2 olur. Buna göre toplam değer -1 olur.