International Olympiad in Informatics 2013

Benzer belgeler
International Olympiad in Informatics 2013

International Olympiad in Informatics Bu masal uzun yıllar önce dünya yeni kurulmuş, IOI ise henüz hayal bile değilken yaşanmıştır.

Parrots (Papağanlar)

Dr. Fatih AY Tel: fatihay@fatihay.net

Temel Giriş/Çıkış Fonksiyonları

Diziler (Arrays) Çok Boyutlu Diziler

TEMEL KAVRAMLAR Test -1

Köklü Sayılar ,1+ 0,1+ 1, 6= m 10 ise m kaçtır? ( 8 5 ) 2x 3. + a =? (4)

Göstericiler (Pointers)

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

BİL1001 Bilgisayar Bilimlerine Giriş 1

Mekanik Oyuncak Bebek

Eln 1001 Bilgisayar Programlama I

Hafta 13 Fonksiyonlar

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

EBOB - EKOK EBOB VE EKOK UN BULUNMASI. 2. Yol: En Büyük Ortak Bölen (Ebob) En Küçük Ortak Kat (Ekok) 1. Yol:

in en küçük değeri için x + y =? (24) + + =? ( a ) a a a b a

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

ALGORİTMA VE PROGRAMLAMA I

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Bigisayar Programlama

6. Ali her gün cebinde kalan parasının (2009) a, b ve c farklı pozitif tamsayılar, 9. x, y, z pozitif gerçek sayılar,

Fonksiyonlar (Altprogram)

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

NİSAN 2010 DENEMESİ A)75 B)80 C)85 D)90 E)95 A)0 B)1 C)2 D)3 E)4

ALGORİTMA VE PROGRAMLAMA I

ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ BAHAR DÖNEMİ ÖDEV-3

ALGORİTMA VE PROGRAMLAMA II

Ders 4: Diziler (Arrays( Arrays) barisgokce.com

Sunum İçeriği. Programlamaya Giriş

Asal Çarpanlara Ayırma / EBOB-EKOK ORTAK DERSLER MATEMATİK. Prof. Dr. Emin KASAP

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

Pointer Kavramı. Veri Yapıları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Dr. Fatih AY Tel: fatihay@fatihay.net

Microsoft Office Excel 2007

140. 2< a< 1 ise kesrinin değeri aşağıdakilerden hangisi olamaz? (3,7) a 1,9 2,4 2,7 3,2 3,7. a a c b ve c a a b c

2017 MÜKEMMEL YGS MATEMATİK

<fn> FORMAT (a1,a2,a3,...) : format deyiminin satır numarasıdır READ, WRITE deyimleri ile verilir. : alan bildirim deyimleridir.

sayısının tamkare olmasını sağlayan kaç p asal sayısı vardır?(88.32) = n 2 ise, (2 p 1

3. ARİTMETİK FONKSİYONLAR ~ (~ tamsayı)

TBP101 (4. Hafta) Alıştırma Soruları ve Cevapları

BLM-431 YAPAY ZEKA. Ders-3 Durum Uzayında Arama. Yrd. Doç. Dr. Ümit ATİLA

Microsoft Excel Formül Yazma Kuralları: 1. Formül yazmak için Formül Araç Çubuğu kullanılır, ya da hücre içerisine çift tıklanarak formül yazılır.

MATLAB a GİRİŞ. Doç. Dr. Mehmet İTİK. Karadeniz Teknik Üniversitesi Makine Mühendisliği Bölümü

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

int printf (const char *format [, argument,...]);

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

EXCEL FORMÜLLER, FONKSİYONLAR

8. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

C Konsol Giriş Çıkış Fonksiyonları

ASAL SAYILAR - TAM BÖLENLER - FAKTÖRİYEL Test -1

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

FORMÜL ADI (FONKSİYON) FORMÜLÜN YAZILIŞI YAPTIĞI İŞLEMİN AÇIKLAMASI

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

14. LİSELERARASI MATEMATİK YARIŞMASI EKİP FİNAL SORULARI

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

HSancak Nesne Tabanlı Programlama I Ders Notları

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

BLM 111 ALGORİTMA VE PROGRAMLAMA I

İÇİNDEKİLER. Bölüm 2 CEBİR 43

BİL-142 Bilgisayar Programlama II

8. İŞARETCİLER (POINTERS)

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Final Sınavı Örnek Soruları Güz 2018 Süre: 90 Dakika

Yrd. Doç. Dr. Caner ÖZCAN

2. Dereceden Denklemin Köklerini Bulan Program

SAYILARIN ASAL ÇARPANLARINA AYRILMASI

AYRIK YAPILAR ARŞ. GÖR. SONGÜL KARAKUŞ- FIRAT ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ YAZILIM MÜHENDİSLİĞİ BÖLÜMÜ, ELAZIĞ

Üst Düzey Programlama

Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

ELN1001 BİLGİSAYAR PROGRAMLAMA I

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

10.Konu Tam sayıların inşası

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Yrd. Doç. Dr. Caner ÖZCAN

Temel Kavramlar 1 Doğal sayılar: N = {0, 1, 2, 3,.,n, n+1,..} kümesinin her bir elamanına doğal sayı denir ve N ile gösterilir.

Veritabanı Tasarımı. Düzenli İfadeler

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

2012 YGS MATEMATİK Soruları

Yrd. Doç. Dr. Caner ÖZCAN

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

m=n şeklindeki matrislere kare matris adı verilir. şeklindeki matrislere ise sütun matrisi denir. şeklindeki A matrisi bir kare matristir.

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

AKILLI GRİD. [X] Netsis Enterprise. [X] Netsis Standart. [X] Netsis Entegre 7.0.2

Laboratuvar 2 Tek Kayıt Fonksiyonları

SAYILAR DOĞAL VE TAM SAYILAR

Bölüm 2 - C ile Programlamaya Giriş

C++ Dersi: Nesne Tabanlı Programlama

BİLGİSAYAR PROGRAMLAMA

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Dr. Fatih AY Tel:

ULAŞTIRMA MODELİ VE ÇEŞİTLİ ULAŞTIRMA MODELLERİ

Transkript:

International Olympiad in Informatics 2013 6-13 July 2013 Brisbane, Australia Day 2 tasks game Turkish 1.1 Bazza ve Shazza bir oyun oynuyorlar. Oyun alanı Grid şeklinde düzenlenmiş hücrelerden oluşmaktadır. Grid, 0,, R - 1 ile numaralandırılmış R tane satırdan ve 0,, C - 1 ile numaralandırılmış C tane sütundan oluşmaktadır. (P, Q), P satırındaki ve Q sütunundaki hücreyi gösterir. Her hücre negatif olmayan bir tamsayı içerir, ve oyunun başında bu tamsayıların hepsi sıfırdır. Oyun şu şekilde oynanır. Herhangi bir anda Bazza aşağıdaki iki hamleden birisini gerçekleştirir: (P, Q) hücresindeki tamsayıyı değiştirir; ya da Shazza'ya, karşılıklı köşeleri (P, Q) ve (U, V) ile belirtilmiş (bu hücreler dahil) belirli bir diktörgensel hücre bloğundaki bütün tamsayıların en büyük ortak bölenini (GCD'sini) sorar. Bazza N + N hamle yapacaktır ( N kere hücre değiştirerek ve N kere GCD sorarak). U Q U Q Sizin göreviniz Bazza'nın sorduğu sorulara doğru cevapları bulmaktır. Örnek R = 2 ve C = 3 olduğunu ve Bazza'nın oyuna aşağıdaki değiştirme hamleleri ile başladığını varsayalım: (0, 0) hücresini 20 olarak değiştir; (0, 2) hücresini 15 olarak değiştir; (1, 1) hücresini 12 olarak değiştir.

Bu hamleler sonucu Grid'in durumu yukarıdaki resimde gösterilmiştir. Bazza daha sonra aşağıdaki dikdörtgenlerdeki GCD'leri sorar: Karşılıklı köşeleri (0, 0) ve (0, 2) olan dikdörtgen: Bu dikdörtgendeki üç tamsayı 20, 0 ve 15'tir ve GCD'leri de 5'tir. Karşılıklı köşeleri (0, 0) ve (1, 1) olan dikdörtgen: Bu dikdörtgendeki dört tamsayı 20, 0, 0 ve 12'dir ve GCD'leri de 4'tür. Daha sonra, Bazza'nın aşağıdaki hücre değiştirmelerini yaptığını varsayalım: (0, 1) hücresini 6 olarak değiştir; (1, 1) hücresini 14 olarak değiştir. Grid'in yeni hali yukarıdaki resimde gösterilmiştir. Bazza daha sonra yine aşağıdaki dikdörtgenlerdeki GCD'leri sorar: Karşılıklı köşeleri (0, 0) ve (0, 2) olan dikdörtgen: Bu dikdörtgendeki üç tamsayı şimdi 20, 6 ve 15'tir ve GCD'leri de 1'dir. Karşılıklı köşeleri (0, 0) ve (1, 1) olan dikdörtgen: Bu dikdörtgendeki dört tamsayı şimdi 20, 6, 0 ve 14'tür ve GCD'leri de 2'dir. Burada Bazza, N = 5 hücre değiştirme ve N = 4 soru sorma hamlesi gerçekleştirmiştir. U Q Gerçekleştirim Aşağıda tanımlandığı üzere init() ve update() prosedürleri ve calculate() fonksiyonunu gerçekleştiren bir dosya göndermelisiniz. Size yardımcı olmak için, bilgisayarınızdaki şablon çözümlerin ( game.c, game.cpp ve game.pas) her biri negatif olmayan X ve Y tamsayılarının GCD'sini bulan gcd2(x, Y) fonksiyonunu içerirler. Eğer X = Y = 0 ise gcd2(x, Y) fonksiyonu 0 değerini döndürür. Bu fonksiyon tam puan almak için yeterince hızlıdır. Yani, en kötü durumda log(x + Y) ile orantılı çalışma zamanına sahiptir.

Sizin Prosedürünüz: init() void init(int R, int C); procedure init(r, C : LongInt); Tanım Gönderdiğiniz dosya bu prosedürü gerçekleştirmelidir. Bu prosedür size Grid'in ilk boyutunu söyleyecek ve global değişken ve veri yapılarınızı ilklemenize imkan sağlayacaktır. Bu prosedür, update() ve calculate() fonksiyonları çağrılmadan önce yalnız bir kez çağrılacaktır. Parametreler R: Satır sayısı. C: Sütun sayısı. Sizin Prosedürünüz: update() void update(int P, int Q, long long K); procedure update(p, Q : LongInt; K : Int64); Tanım Gönderdiğiniz dosya bu prosedürü gerçekleştirmelidir. Bu prosedür, Bazza hücrelerdeki sayıları değiştirdiğinde çağrılacaktır. Parametreler P: Grid hücresinin satır numarası ( 0 P R - 1 ). Q: Grid hücresinin sütun numarası ( 0 Q C - 1 ). K: Bu Grid hücresindeki yeni tamsayı değeri ( 0 K 10 18 ). Yeni değer mevcut değerle aynı da olabilir.

Sizin Fonksiyonunuz: calculate() long long calculate(int P, int Q, int U, int V); function calculate(p, Q, U, V : LongInt) : Int64; Tanım Gönderdiğiniz dosya bu prosedürü gerçekleştirmelidir. Bu fonksiyon, köşeleri (P, Q) ve (U, V) ile belirlenen dikdörtgendeki (köşeler dahil) tüm tamsayıların GCD'sini hesaplamalıdır. Dikdörtgendeki tüm sayılar sıfır ise fonksiyon 0 döndürmelidir. Parametreler P: Dikdörtgenin sol-üst köşesinin satır numarası ( 0 P R - 1 ). Q: Dikdörtgenin sol-üst köşesinin sütun numarası ( 0 Q C - 1 ). U: Dikdörtgenin sağ-alt köşesinin satır numarası ( P U R - 1 ). V: Dikdörtgenin sağ-alt köşesinin sütun numarası ( Q V C - 1 ). Dönen Değer: Dikdörtgen içindeki tüm sayıların GCD'si, eğer tüm sayılar sıfır ise 0.

Örnekteki Durum Aşağıdaki durum ilk örneği açıklamaktadır: Çağrılan Fonksiyon Dönen Değer init(2, 3) update(0, 0, 20) update(0, 2, 15) update(1, 1, 12) calculate(0, 0, 0, 2) 5 calculate(0, 0, 1, 1) 4 update(0, 1, 6) update(1, 1, 14) calculate(0, 0, 0, 2) 1 calculate(0, 0, 1, 1) 2 Kısıtlar Süre sınırı: Altgörevlere bakınız. Hafıza sınırı: Altgörevlere bakınız. 1 R, C 10 9 0 K 10 18, burada K değeri Bazza'nın bir Grid hücresine koyabileceği tamsayıdır. Altgörevler Altgörevlerin kısıtları için sorunun İngilizce versiyonuna bakınız. Altgörev Puan R C N N U Q Süre Sınırı Hafıza Sınırı

Test etme Bilgisayarınızdaki örnek grader, game.in adındaki girdi dosyasını okumaktadır. Bu dosyanın formatı: satır 1: R C N sonraki N satır: yapılış sırasına göre her satırda bir hamle Her bir satırdaki hamle formatı şunlardan birisi olmalıdır: update(p, Q, K) i belirtmek için: 1 P Q K calculate(p, Q, U, V) i belirtmek için: 2 P Q U V Örneğin, yukarıdaki örnek aşağıdaki formatta verilmelidir: 2 3 9 1 0 0 20 1 0 2 15 1 1 1 12 2 0 0 0 2 2 0 0 1 1 1 0 1 6 1 1 1 14 2 0 0 0 2 2 0 0 1 1 Programlama Dili Notları "game.h" dosyasını include etmelisiniz. Önce unit Game'i tanımlamalısınız. Bütün dizi indisleri 0'dan başlar. Grid hücrelerindeki tamsayılar çok büyük olabileceğinden kullanıcılarının long long, kullanıcılarının ise Int64 veri tiplerini kullanması önerilir.