Pages

Subscribe:

Rabu, 22 Agustus 2012

Bayar atau Kabur




So, the answer is :


Hello World!

Description
Diberikan sebuah n, keluarkan "Hello World!" sebanyak n baris.
Input Format
Sebuah bilangan n, 0<n<100
Output Format
"Hello World!" sebanyak n baris.
 Sample Input
2
Sample Output
Hello World!
Hello World!

So, the answer is :


Bola dan Gelas

Menuju acara 17-an, Pak Dengklek mempersiapkan permainan untuk perlombaan di desanya. Permainan tersebut adalah permainan yang klasik dan kini Pak Dengklek ingin mengujinya kepada Anda. Terdapat N (1 ≤ N ≤ 100.000) buah gelas yang diletakkan terbalik lalu dijejerkan di atas meja dan diberi nomor berbeda-beda antara 1 sampai N. Di dalam salah satu gelas terbalik tersebut diletakkan sebuah bola. Lalu dua buah gelas dipilih secara acak dan ditukar posisi dan nomornya. Pemilihan dan pertukaran tersebut dilakukan sebanyak M (1 ≤ M ≤ 100.000) kali. Setelah itu, semua gelas dibuka dan bola pastilah ditemukan di bawah salah satu gelas, misalnya gelas X.
Pak Dengklek ingin agar Anda menebak di gelas nomor berapakah bola tersebut berada pada awalnya. Tidak hanya sekali, Pak Dengklek ingin Anda menebak Q (1 ≤ Q ≤ 100.000) kali untuk beberapa kemungkinan X.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan M. M baris berikutnya masing-masing berisi dua angka X1 dan X2, yang berarti gelas bernomor X1 ditukar nomor dan posisinya dengan gelas bernomor X2 (1 ≤ X1, X2 ≤ N). Baris berikutnya berisi bilangan Q, yang merupakan jumlah pertanyaan untuk kasus bersangkutan. Q baris berikutnya masing-masing berisi sebuah bilangan yang merupakan nomor gelas X (1 ≤ X ≤ N) tempat bola berada setelah permainan berakhir.

Format Keluaran

Q buah baris, masing-masing berisi jawaban untuk tiap pertanyaan yang diberikan di masukan.

Contoh Masukan

5 6
1 3
4 2
5 2
4 5
3 2
4 1
3
2
3
4

Contoh Keluaran

1
5
3 
 

So, the answer is :

 

Parkir Truk

Pak Dengklek memiliki 3 buah truk dan ingin memarkirkannya di tempat parkir yang memberikan harga sewa tempat parkir yang berbeda-beda tergantung dari banyaknya truk yang diparkir. Bila ada 1 truk, Pak Dengklek membayar A rupiah per menit. Bila ada 2 truk, untuk setiap truk Pak Dengklek membayar B rupiah per menit. Bila ada 3 truk, untuk setiap truk Pak Dengklek membayar C rupiah per menit.
Diberikan A, B, dan C (1 ≤ C ≤ B ≤ A ≤ 100) beserta interval waktu Pak Dengklek memarkirkan truk-truknya, tentukan berapa rupiah yang harus Pak Dengklek bayar.

Format Masukan

Baris pertama berisi 3 buah bilangan bulat A, B dan C. Tiga baris berikutnya masing-masing berisi dua bilangan bulat: awal dan akhir yang menyatakan waktu truk yang bersangkutan mulai diparkir dan meninggalkan tempat parkir. Rentang waktu ini adalah 1..100 dalam satuan menit.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yang menyatakan total biaya parkir yang harus Pak Dengklek bayar.

Contoh Masukan

5 3 1
1 6
3 5
2 8

Contoh Keluaran

33 
 
 

So, the answer is :

 

Perkalian Pak Dengklek

Pak Dengklek bosan mengalikan pasangan bilangan dengan cara biasa, sehingga ia memutuskan bahwa sejak sekarang, ia akan menggunakan cara perkalian yang berbeda. Cara perkalian Pak Dengklek adalah menjumlahkan perkalian dari semua pasang digit-digit bilangan A dan B. Misalnya, perkalian dari 123 dan 45 adalah 1 * 4 + 1 * 5 + 2 * 4 + 2 * 5 + 3 * 4 + 3 * 5 = 54.
Diberikan dua bilangan A dan B (1 ≤ A, B ≤ 1.000.000.000), tentukan hasil kalinya menurut cara Pak Dengklek.

Format Masukan

Baris pertama berisi dua buah bilangan bulat A dan B.

Format Keluaran

Sebuah baris berisi sebuah bilangan yaitu hasil perkalian A dan B dengan cara Pak Dengklek.

Contoh Masukan

123 45

Contoh Keluaran

54
 

So, the answer is :

 

Tinggi Kandang Susun

Selain bebek, Pak Dengklek berkeinginan memelihara kucing dan karena itu ia bermaksud membangun kandang untuk kucing-kucingnya. Harga tanah kini sangat mahal, Pak Dengklek tidak memiliki lahan yang cukup luas untuk membangun kandang berlantai satu, maka kandang susunlah solusi untuk tempat tidur N kucingnya (1 ≤ N ≤ 1.000.000). Namun dalam kasus ini, justru yang kita pedulikan adalah total tinggi dari kandang susun tersebut, bukan luasnya. Sekedar informasi, kucing-kucing Pak Dengklek adalah hewan yang rewel, mereka tidak ingin tempat tinggalnya lebih rendah dari batas yang sudah mereka tentukan.
Untuk tiap lantai kandang, Pak Dengklek hanya dapat memasukkan K (1 ≤ K ≤ 1.000.000) kucing secara berurutan, sehingga kucing 1 sampai K pasti akan berada di lantai pertama, kucing ke K+1 sampai 2K pasti akan berada di lantai kedua, dan seterusnya. Agar semua kucing senang, tinggi setiap lantai haruslah nilai maksimal dari batas yang ditentukan oleh kucing-kucing yang ada dalam lantai tersebut.
Tugas Anda kini adalah mencari berapa total tinggi dari kandang susun yang akan dibangun Pak Dengklek. Perlu diingat untuk alas dan atap dibutuhkan papan setebal 1 sentimeter, di antara kedua lantai pun ada sekat setebal 1 sentimeter dan tebal-tebal itu harus diperhitungkan juga dalam menentukan total tinggi kandang.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan K. N baris berikutnya masing-masing berisi sebuah bilangan Ti (1 ≤ Ti ≤ 1.000.000) yang merupakan batas tinggi yang diinginkan oleh kucing ke-i, dalam sentimeter.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yaitu total tinggi kandang susun yang akan Pak Dengklek bangun, dalam sentimeter.

Contoh Masukan 1

5 3
30
20
15
19
29

Contoh Keluaran 1

62

Contoh Masukan 2

2 2
2
2

Contoh Keluaran 2

4

Penjelasan

Pada contoh masukan 1, total tinggi = 62 = 30 + 29 + 1 (alas) + 1 (atap) + 1 (sekat lantai 1 dan lantai 2).


So, the answer is :



 

Runtuh

Runtuh adalah sebuah permainan yang bertujuan untuk membuat penuh satu baris dari sebuah papan menggunakan beberapa bangun yang disediakan. Jika sebuah baris penuh terisi maka baris tersebut akan dihilangkan dan sisa bangun di atasnya akan "diruntuhkan" satu demi satu turun melewati ruang yang telah kosong sampai menumpuk di atas bangun yang ada di bawahnya. Penumpukan yang terjadi dapat menghasilkan situasi seperti pada saat awal di atas yaitu terdapat baris-baris yang penuh terisi, yang selanjutnya akan dihilangkan lagi (setelah semua runtuh). Demikian berlangsung bisa berulang-ulang sampai tidak ada lagi baris yang penuh terisi.
Anda akan diberikan sebuah kondisi papan yang terdiri atas R (1 ≤ R ≤ 20) baris dan C (1 ≤ C ≤ 8) kolom dari suatu permainan ini untuk ditentukan kondisi akhirnya. Misalnya untuk papan seperti di bawah ini:
Kondisi papan setelah baris yang terisi penuh dihilangkan, akan menyisakan ruang kosong seperti di bawah ini:
Bangun-bangun yang terletak di atas baris terbawah yang dihilangkan akan diruntuhkan ke bawah sehingga kondisi papan setelah terjadi penurunan adalah seperti di bawah ini:
Dalam contoh di atas kebetulan keruntuhan hanya sekali saja. Namun, dalam beberapa kasus uji bisa aja terjadi keruntuhan berulang-ulang.

Format Masukan

Baris pertama berisi dua buah bilangan bulat R dan C. R baris berikutnya masing-masing berisi C buah karakter '0' atau '1'. Karakter '1' menandakan adanya bangun pada posisi tersebut.

Format Keluaran

R buah baris, masing-masing berisi C buah karakter yaitu kondisi akhir dari papan permainan tersebut.

Contoh Masukan

11 6
000000
000000
011100
110011
111111
111000
111111
111111
111001
001100
111011

Contoh Keluaran

000000
000000
000000
000000
000000
010000
111000
111001
111101
001110
111011


So, the answer is :


 

Bukit dan Lembah

Pak Dengklek memberikan Anda data ketinggian yang di catat dalam perjalanannya dari suatu posisi awal ke posisi akhir. Data ketinggian adalah bilangan-bilangan positif. Jalan kadang menaik, kadang menurun, kadang datar saja. Posisi di mana terjadi perubahan menaik kemudian menurun (boleh diselingi jalan datar) didefinisikan sebagai puncak dari suatu bukit. Sebaliknya, posisi terjadi perubahan dari menurun terus menaik (boleh diselingi bagian jalan yang datar) didefinisikan sebagai titik terbawah suatu lembah. Walaupun perubahan tersebut kecil saja, definisi itu tetap berlaku.
Carilah beda ketinggian terbesar antara puncak bukit dengan titik terbawah lembah berikutnya atau sebaliknya antara titik terbawah lembah dengan puncak bukit berikutnya pada data perjalanan tersebut.

Format Masukan

Banyak baris, antara 2 sampai 600.000 baris, yang masing-masing berisi sebuah bilangan bulat antara 0 sampai 1.000.000.000.

Format Keluaran

Sebuah baris berisi sebuah bilangan bulat yaitu beda ketinggian terbesar yang diperoleh.

Contoh Masukan

10
26
26
35
35
27
30
30
45
10
8
9

Contoh Keluaran

37

Penjelasan

Ada 12 data. Beda ketinggian pertama (10 ke 35) adalah 25, beda kedua (35 ke 27) adalah 8, beda ketiga (27 ke 45) adalah 18, beda ketinggian keempat (45 ke 8) adalah 37, dan beda ketinggian kelima (8-9) adalah 1. Jadi beda ketinggian tertinggi adalah 37.



So, the answer is :

 

Stack dan Queue

Dalam dunia informatika, penggunaan struktur data queue (antrian) dan stack (tumpukan) sangatlah umum. Kedua struktur data tersebut memiliki kesamaan yakni bahwa keduanya dapat diimplementasikan menggunakan array. Sedangkan perbedaannya terletak pada cara keluar masuk elemen. Struktur data queue memiliki sifat FIFO (first in, first out), artinya elemen yang pertama kali masuk juga akan keluar pertama kali. Sedangkan struktur data stack memiliki sifat LIFO (last in, first out), artinya elemen yang terakhir kali masuk akan keluar pertama kali juga.
Pak Dengklek meminta Anda untuk mensimulasikan sebuah struktur data yang merupakan gabungan antara queue dan stack. Pada struktur data ini, suatu elemen dapat masuk ke bagian awal menggunakan perintah push_front maupun bagian akhir menggunakan perintah push_back. Begitu juga proses pengambilan elemen, dapat mengambil dari bagian awal menggunakan perintah pop_front maupun dari bagian akhir menggunakan perintah pop_back. Diberikan struktur data tersebut dalam keadaan kosong, lakukan N (1 ≤ N ≤ 10.000) operasi memasukkan dan mengeluarkan elemen, dan tentukan kondisi akhir dari struktur data tersebut.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah. Sesuai deskripsi di atas, terdapat 4 kemungkinan perintah yaitu:
  • push_front, memasukkan elemen ke bagian awal struktur data
  • push_back, memasukkan elemen ke bagian akhir struktur data
  • pop_front, mengeluarkan sebuah elemen dari bagian awal struktur data
  • pop_back, mengeluarkan sebuah elemen dari bagian akhir struktur data
Perintah push_front dan push_back tentunya akan diikuti sebuah elemen berupa bilangan bulat antara 1 sampai 1.000.000. Dan perintah pop_front maupun pop_back tidak akan dilakukan saat struktur data tersebut tidak memiliki elemen.

Format Keluaran

Baris-baris sebanyak jumlah elemen pada kondisi akhir struktur data tersebut. Baris-baris tersebut berisi elemen-elemen berurutan dari bagian awal sampai bagian akhir yang berada di kondisi akhir struktur data tersebut.

Contoh Masukan

7
push_back 1
push_back 2
push_front 3
push_back 4
push_front 5
pop_back
pop_front

Contoh Keluaran

3
1
2


So, the answer is :


 

Modified Stack

Stack (tumpukan) adalah salah satu tipe data penting dalam dunia pemrograman. Pak Dengklek meminta Anda untuk mensimulasikan N (1 ≤ N ≤ 1000) buah operasi terhadap sebuah stack yang terdiri dari bilangan bulat.
Mula-mula, stack yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada stack tersebut. Dua perintah dasar yang mungkin diberikan terhadap stack adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut push) berarti menambahkan Y buah bilangan bulat X pada ujung akhir stack. Sedangkan perintah "del Y" (atau biasa disebut pop) berarti menghapus Y buah bilangan bulat dari ujung akhir stack. Coba perhatikan bagaimana tipe data ini menyerupai tumpukan.
Yang unik dari stack Anda kali ini adalah bahwa ada dua buah perintah tambahan "adx X" dan "dex X". Perintah "adx X" berarti Anda perlu menambahkan X pada setiap bilangan bulat yang ada dalam stack, sedangkan perintah "dex X" berarti Anda perlu mengurangi X pada setiap bilangan bulat yang ada dalam stack.
Untuk menguji kebenaran dari operasi stack Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam stack.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah add X Y, del Y, adx X, atau dex X sesuai penjelasan di atas. Nilai X dan Y berada di antara 1 sampai 10.000.

Format Keluaran

Beberapa baris, sesuai dengan banyaknya perintah "add X Y" dan "del Y" yang diberikan pada masukan. Masing-masing baris berisi sebuah bilangan bulat sesuai penjelasan di atas.

Contoh Masukan

8
add 1 1
add 2 2
add 3 3
del 2
adx 2
del 2
dex 1
del 2

Contoh Keluaran

1
3
6
3
5
3

Penjelasan

Berikut ini adalah visualisasi dari contoh masukan.
awal    : []
add 1 1 : [1]           -> cetak 1
add 2 2 : [1 2 2]       -> cetak 3
add 3 3 : [1 2 2 3 3 3] -> cetak 6
del 2   : [1 2 2 3]     -> cetak 3
adx 2   : [3 4 4 5]
del 2   : [3 4]         -> cetak 5
dex 1   : [2 3]
del 2   : []            -> cetak 3 
 

So, the answer is :


 

Modified Queue

Queue (antrian) adalah salah satu tipe data penting dalam dunia pemrograman. Pak Dengklek meminta Anda untuk mensimulasikan N (1 ≤ N ≤ 1.000) buah operasi terhadap sebuah queue yang terdiri dari bilangan bulat.
Mula-mula, queue yang Anda miliki adalah kosong (tidak berisi apa-apa). Lalu Anda perlu membaca perintah yang diberikan satu persatu dan mengaplikasikannya pada queue tersebut. Dua perintah dasar yang mungkin diberikan terhadap queue adalah "add X Y" atau "del Y". Perintah "add X Y" (atau biasa disebut enqueue) berarti menambahkan Y buah bilangan bulat X pada ujung akhir queue. Sedangkan perintah "del Y" (atau biasa disebut dequeue) berarti menghapus Y buah bilangan bulat dari ujung awal queue. Coba perhatikan bagaimana tipe data ini menyerupai antrian.
Yang unik dari queue Anda kali ini adalah bahwa ada sebuah perintah tambahan "rev" yang berarti Anda perlu membalikan queue sehingga bilangan yang tadinya ada di akhir menjadi ada di awal dan sebaliknya.
Untuk menguji kebenaran dari operasi queue Anda, Anda perlu mencetak beberapa hal seperti berikut. Setiap kali melakukan perintah "del Y", Anda perlu mencetak satu bilangan bulat pertama yang Anda keluarkan. Setiap kali melakukan perintah "add X Y", Anda perlu mencetak banyaknya bilangan bulat yang ada dalam queue.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah perintah add X Y, del Y, atau rev sesuai penjelasan di atas. Nilai X dan Y berada di antara 1 sampai 10.000.

Format Keluaran

Beberapa baris, sesuai dengan banyaknya perintah "add X Y" dan "del Y" yang diberikan pada masukan. Masing-masing baris berisi sebuah bilangan bulat sesuai penjelasan di atas.

Contoh Masukan

6
add 1 1
add 2 2
add 3 3
del 2
rev
del 2

Contoh Keluaran

1
3
6
1
3

Penjelasan

Berikut ini adalah visualisasi dari contoh di atas:
awal    : []
add 1 1 : [1]           -> cetak 1
add 2 2 : [1 2 2]       -> cetak 3
add 3 3 : [1 2 2 3 3 3] -> cetak 6
del 2   : [2 3 3 3]     -> cetak 1
rev     : [3 3 3 2]
del 2   : [3 2]         -> cetak 3 
 

So, the answer is :


 

Periksa Palindrom

Palindrom adalah sebuah kata yang dibaca sama apabila urutan huruf-hurufnya dibalik. Misalnya, "apa", taat", "malam", dan lain-lain.
Pak Dengklek memberikan Anda sebuah kalimat yang terdiri atas 1 sampai 10.000 karakter. Tiap kata pada kalimat tersebut terdiri atas 1 sampai 200 karakter 'a' sampai 'z'. Tentukan kata-kata mana saja pada kalimat tersebut yang merupakan palindrom.

Format Masukan

Baris pertama berisi kalimat yang dimaksud.

Format Keluaran

Sebuah baris berisi kalimat pada masukan yang hanya terdiri atas kata-kata yang palindrom, sesuai urutan awalnya.

Contoh Masukan

apa yang di alami malam ini oleh anna dan saras tidak pernah ada

Contoh Keluaran

apa malam ini anna saras ada
 

So, the answer is :

 

Membalik Bilangan

Pak Dengklek memberikan Anda N (0 ≤ N ≤ 10.000) buah bilangan bulat antara 0 sampai 10.000.000. Cetak kembali bilangan-bilangan tersebut setelah dibalik. Misalnya, 308 dibalik menjadi 803.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah bilangan bulat yang ingin dibalik.

Format Keluaran

N buah baris, masing-masing berisi bilangan bulat pada masukan yang telah dibalik. Jangan ada angka nol berlebih di depan bilangan-bilangan tersebut.

Contoh Masukan

5
1330
7525
4025
5
12624

Contoh Keluaran

331
5257
5204
5
42621



So, the answer is :

 

Reverse

Pak Dengklek memberikan Anda sebaris teks dengan panjang antara 1 sampai 1.000 karakter. Balik urutan karakter-karakter pada teks tersebut dan cetak kembali.

Format Masukan

Baris pertama berisi sebuah teks yang ingin dibalik.

Format Keluaran

Sebuah baris yaitu teks pada masukan yang telah dibalik.

Contoh Masukan

Olimpiade Nasional

Contoh Keluaran

lanoisaN edaipmilO
 
 

So, the answer is :

 

Correction

Pernahkan Anda memakai iPhone versi 2.0.2? Fitur paling menyebalkan yang tidak bisa (setidaknya, Pak Dengklek belum bisa) dimatikan pada iPhone versi ini adalah correction suggestion saat pengguna mengetik SMS.
Pak Dengklek ingin membuat program correction suggestion ini, dengan sedikit modifikasi. Penjelasan dari algoritma ini adalah sebagai berikut. Terdapat sebuah kamus yang berisi K (1 ≤ K ≤ 5.000) buah kata yang sah, masing-masing antara 1 sampai 5.000 huruf alfabet. Setiap kali Anda menuliskan sebuah huruf, program akan mengecek potongan kata yang sah yang paling dekat dengan (potongan) kata yang Anda tulis, dan mengembalikan saran potongan kata yang sah tersebut. Bila ada beberapa kata yang sama dekatnya, tuliskan kata yang lebih dahulu muncul pada masukan.
Kedekatan dua buah potongan kata dengan panjang sama adalah jumlah kedekatan antar dua huruf yang terletak di posisi yang sama. Kedekatan antar dua huruf ditentukan oleh jarak minimal keduanya dalam urutan alphabet 'a'-'z' (sirkular, sehingga kedekatan 'a' dan 'z' adalah 1). Misalnya, kedekatan antara "dara" dan "carb" adalah 1+0+0+1 = 2.
Bantulah Pak Dengklek membuat program correction suggestion yang menyebalkan ini.

Format Masukan

Baris pertama berisi sebuah bilangan bulat K. K baris berikutnya berisi kata-kata sah yang ada dalam kamus tersebut. Baris berikutnya berisi sebuah kata (query) antara 1 sampai 5.000 karakter. Dijamin selalu ada kata dalam kamus dengan panjang lebih dari atau sama dengan query.

Format Keluaran

Baris-baris sebanyak panjang kata query. Baris ke-i berisi saran yang akan diberikan program saat pengguna sudah mengetik i huruf pertama dari query.

 

 

Contoh Masukan

5
character
charade
cats
cabaret
blade
chabter

Contoh Keluaran

c
ch
cha
blad
cabar
cabare
cabaret 
 

So, the answer is :

 

Operasi String

Pada latihan ini, program Anda harus membaca sebuah empat buah string yang kita beri nama S1, S2, S3, dan S4. Misalnya program Anda mendapat input seperti ini:
abcdehalofghi
bcd
halo
semua
Dijamin bahwa string S1 mengandung sebuah string S2 di dalamnya. Buang string S2 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Kemudian sisipkan string S4 pada posisi setelah string S3 yang ditemukan di string S1 (dijamin ada, dan hanya satu). Jadi pada contoh di atas, abcdehalofghi diubah menjadi aehalofghi, lalu menjadi aehalosemuafghi. Keluarkan string hasil akhir, yang pada contoh ini adalahaehalosemuafghi.
Untuk menyelesaikan masalah tersebut, kita perlu mengenal berbagai fungsi-fungsi dan prosedur-prosedur penanganan string yang disediakan oleh library Pascal yang bisa kita gunakan. (Dapat dilihat di
http://community.freepascal.org:10000/docs-html/rtl/system/stringfunctions.html)
Fungsi-fungsi dan prosedur-prosedur yang akan kita gunakan adalah:
function length(s: string): integer;
function pos(substr: string; s: string): integer;
procedure delete(var s: string; index: integer; count: integer);
procedure insert(s: string; var source: string; index: integer);
Fungsi length akan mengembalikan panjang dari s.
Jika string s mengandung string substr, fungsi pos akan mengembalikan index pertama dari kemunculan pertama substr di dalam s (karakter pertama diberi index 1). Jika tidak ada, fungsi ini akan mengembalikan 0.
Prosedur delete akan membuang sebanyak count karakter pada string s, dimulai dengan index ke-index. Misalnya, jika s pada mulanya adalah 'Halo', delete(s, 1, 2) akan mengubah isi s menjadi 'lo'.
Prosedur insert akan memasukkan string s ke dalam string source, dimulai pada posisi index ke-index.
Untuk menyelesaikan masalah awal, kita dapat membuat program sebagai berikut:
var
    S1, S2, S3, S4: string;
begin
    readln(S1);
    readln(S2);
    readln(S3);
    readln(S4);
    
    delete(S1, pos(S2, S1), length(S2));
    insert(S4, S1, pos(S3, S1) + length(S3));
    
    writeln(S1);
end.
Pada program di atas, S2 di dalam S1 akan dibuang dari S1, dan selanjutnya S4 akan dimasukkan ke dalam S1 tepat pada posisi pos(S3, S1) + length(S3), yaitu posisi karakter pertama yang tidak termasuk S3, setelah kemunculan seluruh karakter S3 di dalam S1.
Namai program tersebut dengan nama pjj0114 dan simpanlah dengan nama 'pjj0114.PAS'.

Contoh Masukan

abcdehalofghi
bcd
halo
semua

Contoh Keluaran

aehalosemuafghi
Masih banyak fungsi-fungsi dan prosedur-prosedur lain yang mungkin berguna, yang bisa dipelajari di
http://community.freepascal.org:10000/docs-html/rtl/system/index.html
Berikut ini adalah ringkasan dari beberapa fungsi yang mungkin berguna:
procedure str(x: integer; var s: string);
Prosedur ini akan mengubah nilai integer x menjadi string, lalu dimasukkan ke dalam variabel s. Misalnya, jika x bernilai 10, s akan menjadi bernilai '10'.
function lowerCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf kecil.
function upCase(s: string): string;
Fungsi ini akan menghasilkan sebuah string seperti s tetapi semua karakternya diubah ke huruf besar.
function chr(b: byte): char;
Fungsi ini akan mengembalikan sebuah karakter yang memiliki kode ASCII b. Misalnya chr(65) akan mengembalikan "A".
function ord(c: char): longint;
Fungsi ini akan mengembalikan nilai bilangan bulat dari sebuah tipe ordinal. Biasanya fungsi ini digunakan untuk menentukan kode ASCII dari karakter c. Misalnya, ord("A") akan mengembalikan 65.
Kombinasi chr dan ord dapat digunakan untuk mengubah sebuah karakter dari huruf kecil menjadi huruf besar, atau sebaliknya. Misalnya,chr(ord("x") + (ord("A") - ord("a"))) akan menghasilkan "X".
function abs(l: longint): longint;
Fungsi ini akan mengembalikan nilai absolut dari l. Misalnya, abs(-3) akan mengembalikan 3, dan abs(3) juga mengembalikan 3.
procedure dec(var x: integer);
procedure dec(var x: integer; decrement: integer);
Prosedur ini akan mengurangi nilai x dengan 1, atau dengan nilai decrement jika diberikan.
procedure inc(var x: integer);
procedure inc(var x: integer; increment: integer);
Prosedur ini akan menambah nilai x dengan 1, atau dengan nilai increment jika diberikan.
function sqr(x: longint): longint;
function sqr(x: real): real;
Fungsi ini akan mengembalikan kuadrat dari x.
function sqrt(x: real): real;
Fungsi ini akan mengembalikan akar kuadrat dari x.
function trunc(x: real): integer;
Fungsi ini akan mengembalikan bagian bilangan bulat dari sebuah bilangan real x. Misalnya, trunc(3.456) akan menghasilkan 3.
function round(x: real): integer;
Fungsi ini akan menghasilkan pembulatan dari sebuah bilangan real x. Pada Pascal, aturan pembulatan untuk 0.5 adalah ke arah bilangan genap. Jadi, round(1.5) akan menghasilkan 2, tetapi round(2.5) juga akan menghasilkan 2.
function pi: real;
Fungsi ini mengembalikan nilai pi (3.14159...).


So, the answer is :

 

Saling Silang

Suatu permainan iseng-iseng asah otak berikut mungkin sering Pak Dengklek mainkan. Diberikan matriks berukuran R x C (2 ≤ R, C ≤ 100) yang setiap selnya berisikan satu huruf kapital. Pada matriks terdapat sejumlah kata yang karakter-karakternya tersusun secara
  • horisontal
    • dari kiri ke kanan, atau
    • dari kanan ke kiri, atau
  • vertikal
    • dari atas ke bawah, atau
    • dari bawah ke atas, atau
  • diagonal
    • dari kiri atas ke kanan bawah, atau
    • dari kanan bawah ke kiri atas, atau
    • dari kiri bawah ke kanan atas, atau
    • dari kanan atas ke kiri bawah
Pak Dengklek meminta Anda untuk membuat program yang diberikan matriks tersebut dan N (1 ≤ N ≤ 100) buah kata yang terdiri antara 1 sampai 100 karakter, menentukan kata-kata mana saja yang ada di dalam matriks tersebut.

Format Masukan

Baris pertama berisi dua buah bilangan bulat R dan C. R baris selanjutnya masing-masing berisi C sebuah karakter yang dipisahkan oleh sebuah spasi. Baris berikutnya berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi kata-kata yang ingin dicari.

Format Keluaran

N buah baris, masing-masing berisi Y jika kata yang dimaksud ditemukan dalam matriks, atau T jika tidak ditemukan.

Contoh Masukan

6 5
B A B K D
U N I D K
L D U L O
U I T R N
H N A G A
F I U T G
6
BULUH
UDIK
HITAM
ANDINI
LIAT
ARUN

Contoh Keluaran

BULUH Y
UDIK Y
HITAM T
ANDINI Y
LIAT Y
ARUN Y

Penjelasan

Matriks pada contoh masukan adalah sebagai berikut.



So, the answer is :


 

Refleksi Matriks

Pak Dengklek memberikan Anda dua buah matriks berukuran N x N (1 ≤ N ≤ 75), yang setiap elemennya adalah sebuah bilangan bulat antara 1 sampai 100. Periksalah apakah kedua matriks tersebut identik, atau identik refleksional, atau tidak identik sama sekali. Dua matriks disebut identik tentu jika kedua matriks persis sama. Dua matriks disebut identik refleksional jika jika salah satu adalah pencerminan dari matriks yang lain. Pencerminan bisa dengan sumbu vertikal (|), dengan sumbu horisontal (—), dengan sumbu diagonal ke kiri bawah (/), atau dengan sumbu diagonal ke kanan bawah (\).
Misalnya, matriks pertama adalah
1 2 3
4 5 6
7 8 9
dan matriks kedua adalah
7 8 9
4 5 6
1 2 3
Kedua matriks adalah identik refleksional dengan sumbu horisontal (—).
Misalnya, matriks pertama adalah
1 2 3
4 5 6
7 8 9

dan matriks kedua adalah
3 2 1
6 5 4
9 8 7
Kedua matriks adalah identik refleksional dengan sumbu vertikal (|).
Misalnya, matriks pertama adalah
1 2 3
4 5 6
7 8 9
dan matriks kedua adalah
1 4 7
2 5 8
3 6 9
Kedua matriks adalah identik refleksional dengan sumbu diagonal ke kanan bawah (\).
Misalnya, matriks pertama adalah
1 2 3
4 5 6
7 8 9
dan matriks kedua adalah
9 6 3
8 5 2
7 4 1
Kedua matriks adalah identik refleksional dengan sumbu diagonal ke kiri bawah (/).

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan N. N baris berikutnya berisi N buah bilangan bulat yaitu elemen-elemen dari matriks pertama. Baris berikutnya berisi dua buah bilangan bulat N dan N. N baris berikutnya berisi N buah bilangan bulat yaitu elemen-elemen dari matriks kedua.

Format Keluaran

Sebuah baris berisi tidak identik jika kedua matriks tidak identik refleksional, atau identik jika kedua matriks benar-benar identik, atau salah satu dari vertikal, horisontal, diagonal kanan bawah, diagonal kiri bawah, yaitu jenis refleksinya. Dijamin hanya ada satu kemungkinan jawaban.

Contoh Masukan 1

3 3
1 2 3
4 5 6
7 8 9
3 3
9 6 3
8 5 2
7 4 1

Contoh Keluaran 1

diagonal kiri bawah

Contoh Masukan 2

3 3
1 2 3
4 5 6
7 8 9
3 3
1 2 3
4 5 6
7 8 9

Contoh Keluaran 2

identik

Contoh Masukan 3

3 3
1 2 3
4 5 6
7 8 9
3 3
7 4 1
8 5 2
9 6 3

Contoh Keluaran 3

tidak identik



So, the answer is :



 

Rotasi Matriks

Pak Dengklek memberikan Anda dua buah matriks berukuran N x N (1 ≤ N ≤ 75), yang setiap elemennya adalah sebuah bilangan bulat antara 1 sampai 100. Periksalah apakah kedua matriks tersebut identik rotasional. Matriks A dan B identik rotasional jika B diputar (dirotasi) akan menghasilkan A. Putaran yang diperbolehkan tentu saja antara 0, 90, 180 atau 270 derajat searah jarum jam.
Misalnya, matriks pertama adalah
1 2 3
1 2 3
1 2 3
dan matriks kedua adalah
3 3 3
2 2 2
1 1 1
Kedua matriks adalah identik rotasional karena jika matriks kedua diputar 270 derajat akan menghasilkan matriks pertama.
Misalnya, matriks pertama adalah
1 2 3
1 2 3
1 2 3
dan matriks kedua adalah
3 2 1
3 2 1
3 2 1
Kedua matriks adalah identik rotasional karena jika matriks kedua diputar 180 derajat akan menghasilkan matriks pertama.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan N. N baris berikutnya berisi N buah bilangan bulat yaitu elemen-elemen dari matriks pertama. Baris berikutnya berisi dua buah bilangan bulat N dan N. N baris berikutnya berisi N buah bilangan bulat yaitu elemen-elemen dari matriks kedua.

Format Keluaran

Sebuah baris berisi tidak sama jika kedua matriks tersebut tidak identik rotasional, atau salah satu dari 0, 90, 180, dan 270 yaitu sudut perputaran B untuk menghasilkan A. Dijamin hanya ada satu kemungkinan jawaban.

Contoh Masukan 1

3 3
1 2 3
1 2 3
1 2 3
3 3
3 3 3
2 2 2
1 1 1

Contoh Keluaran 1

270

Contoh Masukan 2

3 3
1 2 3
1 2 3
1 2 3
3 3
1 2 3
2 3 1
3 1 2

Contoh Keluaran 2

tidak sama


So, the answer is :


 

Perkalian Matriks

Pak Dengklek memberikan Anda dua buah matriks. Matriks pertama berukuran A x B sedangkan matriks kedua berukuran C x D (1 ≤ A, B, C, D ≤ 75; B = C). Tiap elemen pada kedua matriks tersebut adalah sebuah bilangan bulat antara 1 sampai 100. Kalikan kedua matriks tersebut lalu cetak hasilnya.

Format Masukan

Baris pertama berisi dua buah bilangan bulat A dan B. A baris berikutnya masing-masing berisi B buah bilangan bulat, yaitu elemen-elemen pada matriks pertama. Baris berikutnya berisi dua buah bilangan bulat C dan D. C baris berikutnya masing-masing berisi D buah bilangan bulat, yaitu elemen-elemen pada matriks kedua.

Format Keluaran

A buah baris, masing-masing berisi D buah bilangan bulat yaitu elemen-elemen pada matriks hasil perkalian matriks pertama dan matriks kedua.

Contoh Masukan

2 3
1 1 1
1 1 2
3 4
1 1 1 1
1 1 1 1
1 1 1 2

Contoh Keluaran

3 3 3 4
4 4 4 6


So, the answer is :

Matriks

Pak Dengklek memberikan Anda sebuah matriks berukuran N x M (1 ≤ N, M ≤ 100). Elemen pada baris ke-i dan kolom ke-j adalah aij (1 ≤ aij ≤ 100). Cetak kembali matriks tersebut setelah diputar 90 derajat searah jarum jam.

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan M. N baris berikutnya masing-masing berisi M buah bilangan bulat aij.

Format Keluaran

M buah baris, masing-masing berisi N buah bilangan bulat yang menyatakan matriks pada masukan setelah diputar.

Contoh Masukan

4 3
34  87  15
66  71  52
47  47  48
45  75  35

Contoh Keluaran

45  47  66  34
75  47  71  87
35  48  52  15 
 

So, the answer is :

Modus Terbesar

Dalam ilmu statisika, dikenal suatu ukuran sebaran yang disebut dengan modus. Modus adalah data yang paling banyak muncul dalam suatu kumpulan data. Sebuah kumpulan data bisa jadi memiliki lebih dari satu modus, yaitu ketika terdapat lebih dari satu data yang jumlah kemunculannya sama.
Pak Dengklek memberikan Anda N (1 ≤ N ≤ 100.000) buah bilangan bulat yang masing-masing di antara 1 sampai 1.000. Tentukanlah modus terbesar dari bilangan-bilangan tersebut.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya berisi bilangan-bilangan tersebut.

Format Keluaran

Sebuah baris berisi modus terbesar dari kumpulan bilangan tersebut.

Contoh Masukan

6
1
3
2
4
1
4

Contoh Keluaran

4
 

So, the answer is :

 

SDS

Pak Dengklek memberikan Anda N (1 ≤ N ≤ 10.000) buah bilangan nyata x1, x2, ..., xN (-1.000.000.00 ≤ xi ≤ +1.000.000.00), yang masing-masing merupakan hasil pengukuran. Nilai simpangan bakunya didefinisikan sebagai
Hitung nilai simpangan baku dari data yang diberikan Pak Dengklek tersebut.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah bilangan nyata xi  dengan dua angka di belakang tanda desimal.

Format Keluaran

Sebuah baris berisi empat buah bilangan nyata: bilangan terkecil, bilangan terbesar, rata-rata, dan simpangan baku, dipisahkan dengan satu spasi. Semuanya dicetak dengan dua angka di belakang koma.

Contoh Masukan 1

10
297536.26
526260.62
828177.56
-45559.92
978715.10
383672.24
467737.00
67692.93
-765057.71
790913.04

Contoh Keluaran 1

-765057.71 978715.10 353008.71 510618.90

Contoh Masukan 2

30
-810984.36
-579222.13
-117867.17
849146.53
-109313.71
852713.84
925273.01
-471109.60
-344732.29
806856.12
556582.16
616013.89
295053.48
142864.77
-502461.22
-248941.25
-429372.21
-441792.48
-421294.55
888891.92
230231.19
-476848.18
-703358.42
739601.31
47096.13
953740.58
-891076.69
-841539.26
-334396.20
317560.98

Contoh Keluaran 2

-891076.69 953740.58 16577.21 607823.72 
 
 

So, the answer is :


Array

Pak Dengklek memberikan Anda banyak data dalam beberapa baris, masing-masing berisi sebuah bilangan bulat. Cetak kembali bilangan-bilangan tersebut dalam urutan terbalik.

Format Masukan

Banyak baris, antara 0 sampai 25.000 baris, masing-masing berisi sebuah bilangan bulat antara -10.000 sampai 10.000.

Format Keluaran

Sebanyak baris pada masukan, berisi bilangan-bilangan tersebut dalam urutan terbalik.

Contoh Masukan

1
2
3
4
5

Contoh Keluaran

5
4
3
2
1 
 
 

So, the answer is :

 

Var Parameter

Pak Dengklek memberikan Anda dua buah bilangan bulat A dan B (1 ≤ A, B ≤ 1.000). Tukar nilai kedua bilangan tersebut lalu cetak kembali kedua bilangan tersebut.

Format Masukan

Baris pertama berisi dua buah bilangan bulat A dan B.

Format Keluaran

Sebuah baris berisi dua buah bilangan bulat B dan A, dipisahkan oleh sebuah spasi.

Contoh Masukan

4 5

Contoh Keluaran

5 4
 
 

So, the answer is :

 

Function

Faktorial dari sebuah bilangan cacah N didefinisikan sebagai N x (N-1) x (N-2) x ... x 1, dengan 0! = 1.
Pak Dengklek memberikan Anda sebuah bilangan bulat N (-100 ≤ N ≤ 100). Jika N berada dalam jangkauan 0 hingga 10, keluarkan nilai N!. Jika N negatif atau lebih besar dari 10, keluarkan ditolak.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N.

Format Keluaran

Sebuah baris berisi sesuai dengan permintaan soal.

Contoh Masukan 1

4

Contoh Keluaran 1

24

Contoh Masukan 2

11

Contoh Keluaran 2

ditolak
 

So, the answer is :

 

Procedure

Pak Dengklek memberikan Anda banyak bilangan bulat N (1 ≤ N < 100.000). Jika N merupakan satuan, cetak satuan. Jika N merupakan puluhan, cetak puluhan. Jika N adalah ratusan, cetak ratusan. Jika N adalah ribuan, cetak ribuan. Jika N adalah puluh ribuan, cetak puluhribuan.

Format Masukan

Banyak baris, antara 1 sampai 100 baris, masing-masing berisi sebuah bilangan bulat N.

Format Keluaran

Untuk setiap baris, cetak sesuai permintaan soal.

Contoh Masukan

1
12 
123

Contoh Keluaran

satuan
puluhan
ratusan
 

So, the answer is:

 

Bilangan Agak Prima

Suatu bilangan bulat positif disebut "agak prima" jika bilangan tersebut hanya habis dibagi oleh bilangan 1, dirinya sendiri, dan sebanyak-banyaknya dua buah bilangan bulat positif lainnya.
Pak Dengklek memberikan Anda T (1 ≤ T ≤ 8) buah bilangan bulat N (1 ≤ N ≤ 1.000.000.000). Tentukan apakah N "agak prima" atau bukan.

Format Masukan

Baris pertama berisi sebuah bilangan bulat T. T baris berikutnya masing-masing berisi sebuah bilangan bulat N.

Format Keluaran

T buah baris, masing-masing berisi YA jika N adalah bilangan "agak prima", atau TIDAK jika bukan.

Contoh Masukan

3
17
51
52

Contoh Keluaran

YA
YA
TIDAK
 

So, the answer is :

 

Faktor Bilangan

Faktor-faktor suatu bilangan bulat N adalah bilangan-bilangan bulat positif yang habis membagi N. Misalnya, faktor dari 24 adalah 24, 12, 8, 6, 4, 3, 2, dan 1.
Pak Dengklek memberikan Anda sebuah bilangan bulat N (1 ≤ N ≤ 1.000.000). Tentukan faktor-faktor dari N.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N.

Format Keluaran

Cetak faktor-faktor dari N, masing-masing dalam sebuah baris, terurut dari besar ke kecil.

Contoh Masukan 1

24

Contoh Keluaran 1

24
12
8
6
4
3
2
1

Contoh Masukan 2

9

Contoh Keluaran 2

9
3
1 
 
 

So, the answer is :

 

 

Cek Bilangan Prima

Anda seharusnya sudah tahu apakah bilangan prima itu. Singkatnya bilangan prima adalah bilangan bulat lebih dari 1 yang tidak dapat dibagi menjadi bilangan bulat lagi oleh bilangan bulat lain kecuali oleh dirinya sendiri. Contoh bilangan prima: 2, 3, 5, 7, 11, 13, 17, dst. Misalnya, 9 bukan bilangan prima karena 9 dapat dibagi 3. Apakah -5 bilangan prima? Menurut definisi di atas, bilangan prima adalah bilangan bulat positif, sehingga -5 bukan prima.
Pak Dengklek memberikan Anda bilangan-bilangan N (-32.000 < N < 32.000). Untuk setiap bilangan, tentukan apakah bilangan tersebut bilangan prima atau bukan.

Format Masukan

Banyak baris, antara 1 sampai 100 baris, masing-masing berisi sebuah bilangan bulat N.

Format Keluaran

Untuk setiap baris, cetak YA apabila N adalah bilangan prima, atau TIDAK jika bukan.

Contoh Masukan

23
-7
9000
1

Contoh Keluaran

YA
TIDAK
TIDAK
TIDAK
 
 

So, the answer is :

 

Rata-Rata

Anda sudah pernah belajar statistika? Jika diketahui sejumlah N bilangan: x1, x2, ..., xN, yang masing-masing merupakan hasil pengukuran, misalnya nilai-nilai pelajaran Y siswa-siswa di kelas anda, maka untuk mengetahui kecenderungan nilai-nilai tersebut digunakan besaran-besaran seperti: nilai terkecil, nilai terbesar, nilai rata-rata, dsb., yang diperoleh dari perhitungan.
Nilai terkecil adalah salah satu dari N bilangan di atas yang mana tidak ada bilangan lain yang lebih kecil dari padanya.
Nilai terbesar adalah salah satu dari N bilangan di atas yang mana tidak ada bilangan lain yang lebih besar dari padanya.
Nilai rata-rata adalah jumlah dari N bilangan tersebut dibagi dengan N.
Pak Dengklek memberikan Anda N (1 ≤ N ≤ 10.000) buah bilangan. Hitunglah besaran-besaran tersebut.

Format Masukan

Baris pertama berisi sebuah bilangan bulat N. N baris berikutnya masing-masing berisi sebuah bilangan nyata xi (-1.000.000,00 ≤ xi ≤ 1.000.000,00) dengan dua angka di belakang koma.

Format Keluaran

Sebuah baris berisi tiga buah bilangan nyata yaitu: bilangan terkecil, bilangan terbesar, dan rata-ratanya, dipisahkan dengan sebuah spasi, dan dalam dua angka di belakang koma.

Contoh Masukan 1

10
297536.26
526260.62
828177.56
-45559.92
978715.10
383672.24
467737.00
67692.93
-765057.71
790913.04

Contoh Keluaran 1

-765057.71 978715.10 353008.71

Contoh Masukan 2

30
-810984.36
-579222.13
-117867.17
849146.53
-109313.71
852713.84
925273.01
-471109.60
-344732.29
806856.12
556582.16
616013.89
295053.48
142864.77
-502461.22
-248941.25
-429372.21
-441792.48
-421294.55
888891.92
230231.19
-476848.18
-703358.42
739601.31
47096.13
953740.58
-891076.69
-841539.26
-334396.20
317560.98

Contoh Keluaran 2

-891076.69 953740.58 16577.21 
 
 

So, the answer is :

 

Pola 3

Pak Dengklek meminta Anda untuk memperhatikan contoh masukan dan keluaran yang diberikan, menemukan polanya, lalu membuat program yang menghasilkan pola tersebut. Bisakah Anda?

Format Masukan

Baris pertama berisi dua buah bilangan bulat N dan K (0 < N < 100, 1 < K < 10).

Format Keluaran

Pola berukuran N dan K.

Contoh Masukan 1

11 3

Contoh Keluaran 1

1 2 * 4 5 * 7 8 * 10 11

Contoh Masukan 2

11 2

Contoh Keluaran 2

1 * 3 * 5 * 7 * 9 * 11

Contoh Masukan 3

11 5

Contoh Keluaran 3

1 2 3 4 * 6 7 8 9 * 11 
 
 

So, the answer is :

 

Pola 2

Pak Dengklek meminta Anda untuk memperhatikan contoh masukan dan keluaran yang diberikan, menemukan polanya, lalu membuat program yang menghasilkan pola tersebut. Bisakah Anda?

Format Masukan

Baris pertama berisi sebuah bilangan bulat N (0 ≤ N ≤ 10).

Format Keluaran

Pola berukuran N.

Contoh Masukan 1

5

Contoh Keluaran 1

0
12
345
6789
01234

Contoh Masukan 2

7

Contoh Keluaran 2

0
12
345
6789
01234
567890
1234567 
 
 

So,  the answer is :