Carl
Time limit 3 detik


"All can be known, and known by me."

Carl adalah seorang penyihir. Dia memiliki banyak mantra. Sebagai seorang penyihir yang hebat, dia pun memiliki cara khusus untuk mengingat serta mengaktifkan mantra yang dia miliki.

Untuk mengaktifkan mantra, Carl menggunakan aura. Dia memiliki N jenis aura dan dia dapat mengaktifkan K aura sekaligus. Untuk mengaktifkan mantra yang spesifik, berikut hal yang harus dilakukan Carl:
  • Carl harus mengaktifkan tepat K aura. 
  • Aura yang aktif boleh sama (mengaktifkan aura yang sama akan memperkuat aura tersebut) 
  • Setelah kedua kondisi diatas dipenuhi, barulah Carl bisa mengaktifkan mantra. 
Carl penasaran, berapa banyak mantra yang dia kuasai (dia terlalu hebat dan terlalu tidak peduli dengan jumlah mantra yang dia kuasai). Bantulah dia! (Baca penjelasan dari contoh untuk lebih jelas)

Input

Baris pertama terdapat sebuah bilangan bulat T (1 <= T <= 50) yang menyatakan jumlah kasus. T baris selanjutnya masing-masing berisi dua buah bilangan N dan K (1 <= N, K <= 1 000 000).

Output

Untuk setiap kasus outputkan pada satu baris sebuah bilangan bulat yang menyatakan jumlah mantra yang dimiliki Carl modulo 1 000 000 007.

Contoh Input

2
3 3
2 3

Contoh Output

10
4

Penjelasan

Pada kasus pertama, ada tiga aura dan Carl dapat mengaktifkan tiga aura sekaligus. Anggaplah ketiga aura tersebut diberi nama Quas(Q), Wex(W), dan Exort(E). Berikut mantra-mantra yang Carl miliki:

QQQ - Cold Snap
QQW - Ghost Walk
QQE - Ice wall
WWQ - Tornado
QWE - Deafening Blast
EEQ - Forged Spirit
WWW - EMP
WWE - Alacrity
EEW - Chaos Meteor
EEE - Sun Strike


Total ada 10 mantra. Perlu diingat bahwa Carl dapat mengaktifkan aura yang sama (seperti pada mantra Cold Snap, dimana dia mengaktifkan tiga aura Quas).

Pada kasus kedua, anggaplah aura yang dimiliki Carl adalah Quas(Q) dan Wex(W). Mantra yang dimilikinya adalah:

QQQ - Cold Snap
QQW - Ghost Walk
WWQ - Tornado
WWW - EMP

Monumen
Time limit 3 detik 

Budi ingin membangun sebuah monumen pada lahan berukuran N x M (3 <= N, M <= 500) petak bujur sangkar. Monumen yang akan dibangun mempunyai alas berbentuk bujur sangkar yang diputar 45 derajat dan monumen menempati sebuah petak yang terletak di tengah-tengah alas. Perlu diketahui bahwa luas alas harus lebih besar dari luas monumen.



Dalam membangun monumen, Budi sangat rewel dengan tingkat keindahan monumen. Setiap petak mempunyai tingkat keindahan P (-1000 <= P <= 1000) yang berbeda. Tingkat keindahan monumen dihitung dari total tingkat keindahan area yang dilingkupi alas monumen termasuk monumen itu sendiri.

Bantulah Budi untuk membangun monumen yang paling indah. Karena ini adalah proyek milik pemerintah maka Budi tidak boleh untuk tidak membangun monumen tersebut.

Input

Baris pertama berisi sebuah bilangan bulat T (1 <= T <= 100) yang menyatakan jumlah kasus. Setiap kasus terdiri dari dua baris, baris pertama berisi dua buah bilangan bulat N dan M yang menyatakan ukuran petak. N baris berikutnya masing-masing berisi M buah bilangan bulat dipisahkan spasi yang menyatakan tingkat keindahan pada setiap petak.

Output

Untuk setiap kasus, output terdiri atas sebuah baris yang berisi sebuah bilangan bulat yang menyatakan tingkat keindahan monumen terbesar yang bisa dibangun oleh Budi.

Contoh Input

1
3 3
1 1 1
1 1 1
1 1 1

Contoh Output

5

Lotek
Time limit 1 detik 

Saya dan adik saya sering makan lotek (lotek adalah makanan mirip gado-gado yang banyak ditemui di Yogyakarta). Saya selalu makan dengan porsi normal, sedang adik saya tidak selalu makan dengan porsi normal. Terkadang dia makan dengan porsi yang lebih besar, tapi pernah juga dia makan dengan porsi yang lebih kecil.

Suatu ketika, kami berdua makan di warung lotek di dekat tempat tinggal kami. Seperti biasa, saya makan dengan porsi standar dengan harga X. Adik saya memesan dengan porsi yang berbeda. Dia berkata kepada penjualnya,"Buatkan saya lotek dengan harga Y". Karena penjualnya merupakan orang yang adil, dia membuatkan lotek untuk adik saya sesuai dengan harga yang diberikan olehnya.

Saya pun penasaran, berapa perbandingan porsi adik saya pesan dengan porsi yang saya pesan? Bantulah saya menghitungnya.

Input

Pada baris pertama, diberikan sebuah bilangan bulat positif N (1 <= N <= 100), yang menandakan berapa kali kami berdua makan di warung lotek. N baris berikutnya, diberikan dua buah bilangan bulat positif X dan Y (1 <= X, Y <= 100 000), yang menunjukkan harga porsi lotek yang saya pesan dan yang adik saya pesan pada kunjungan ke-i kami ke warung lotek.

Output

Keluarkan N buah baris, dimana baris ke-i adalah porsi lotek yang adik saya pesan pada kunjungan ke-i. Perlu diingat bahwa penulisan jawabannya haruslah dalam bentuk "A/B", dimana B tidak membagi habis A.

Contoh Input

2
6000 8000
6500 8000

Contoh Output

4/3
16/13

Lapisan
Time limit 2 detik

Catur adalah seorang peneliti gempa bumi. Pada suatu hari Catur mencoba membuat simulasi gempa bumi pada lapisan-lapisan yang terdapat di dalam tanah. Setiap batas-batas antar lapisan di dalam tanah dimodelkan sebagai sekumpulan titik pada koordinat dua dimensi di mana setiap titik yang berurutan dihubungkan dengan garis. Setiap lapisan mempunyai sebuah koefisien V yang mempengaruhi rambatan gelombang pada lapisan tersebut.

Ilustrasi lapisan pada contoh input. Garis vertikal di kiri dan kanan gambar hanya sebagai penegas batas kiri dan kanan

Setelah model lapisan disiapkan, Catur lalu menempatkan sejumlah titik secara sembarang pada model lapisan tersebut sebagai sensor yang dapat membuat atau menerima gelombang. Beberapa saat kemudian Catur menyadari bahwa titik-titik yang ditempatkan tadi jumlahnya terlalu banyak dan Catur lupa mencatat lapisan tempat titik-titik itu berada sebelum memulai langkah selanjutnya.

Input

Baris pertama terdapat sebuah bilangan bulat N (1 <= N <= 100) yang menyatakan jumlah lapisan. Kemudian baris-baris selanjutnya terdapat deskripsi dari N+1 batas lapisan terurut dari atas ke bawah (koordinat y awal terkecil sampai terbesar). Setiap batas lapisan diawali sebuah bilangan bulat pada satu baris Li (2 <= Li <= 20000) yang menyatakan jumlah titik yang menyusun batas lapisan tersebut. Li baris berikutnya masing-masing terdapat dua buah bilangan bulat X dan Y (-10000 <= X, Y <= 10000) yang menyatakan titik-titik penyusun batas lapisan. Titik-titik tersebut terurut dari kiri ke kanan (X(j) < X(j+1)). Dijamin tidak ada dua batas lapisan yang saling bersinggungan serta semua batas lapisan mempunyai koordinat X awal dan akhir yang sama. Setelah deskripsi batas lapisan, terdapat sebuah bilangan M (1 <= M <= 10000) pada satu baris yang menyatakan jumlah titik sensor yang ditempatkan. M baris berikutnya masing-masing terdapat dua buah bilangan Sx dan Sy (-10000 <= Sx, Sy <= 10000) yang menyatakan koordinat titik sensor yang ditempatkan. Dijamin titik sensor terletak pada suatu lapisan.

Output

Untuk setiap titik sensor outputkan pada satu baris sebuah bilangan bulat yang menyatakan nomor lapisan tempat titik sensor tersebut berada. Lapisan dinomori 1 sampai N, dari lapisan teratas ke lapisan terbawah. Jika titik sensor terletak pada batas lapisan outputkan nomor lapisan terkecil.


Contoh Input

2
2
0 0
1000 0
3
0 100
500 50
1000 200
2
0 250
1000 250
2
500 40
500 50

Contoh Output

1
1

Peta
Time limit 1 detik

Ani senang mengoleksi gambar peta. Suatu hari Ani ingin menggunakan komputer barunya untuk menampilkan koleksi gambar peta yang pernah dia buat. Ani mencoba membuka salah satu gambar peta untuk ditampilkan pada komputer barunya.


Gambar peta asli (800x800)

Setelah ditampilkan, ternyata gambar peta yang ditampilkan "dipaksa" memenuhi layar komputer sehingga gambar peta menjadi lebih pipih karena mengikuti ukuran layar. Ani tidak menyukai gambar peta yang menjadi lebih pipih karena membuat informasi yang didapat dari peta menjadi tidak akurat.


Layar 800x600 menampilkan 800x800 piksel

Layar 800x600 menampilkan 1067x800 piksel


Kemudian, Ani menyadari bahwa layar pada komputer barunya selalu menampilkan gambar peta di tengah layar serta dapat menampilkan sejumlah piksel ukuran berapapun dan dapat diubah sesuai yang diinginkan. Secara default ukuran piksel yang ditampilkan layar mengikuti ukuran gambar. Ani ingin mengubah ukuran piksel yang ditampilkan agar gambar peta dapat ditampilkan secara penuh dan sesuai ukuran aslinya.

Input

Baris pertama berisi sebuah bilangan bulat T (1 <= T <= 100) yang menyatakan jumlah kasus. Setiap kasus terdiri dari dua baris, baris pertama berisi dua buah bilangan bulat Ws dan Hs yang menyatakan ukuran layar. Baris berikutnya berisi dua buah bilangan bulat Wm dan Hm yang menyatakan ukuran gambar peta. (1 <= Ws, Hs, Wm, Hm <= 10000)

Output

Untuk setiap kasus, output terdiri dari sebuah baris yang berisi dua buah bilangan bulat Wp dan Hp yang menyatakan ukuran piksel yang ditampilkan layar dibulatkan ke bilangan bulat terdekat.

Contoh Input

2
800 600
800 800
1024 768
1024 768

Contoh Output

1067 800
1024 768

1 Comments

  1. Kelihatannya sulit soal gemastik 7 programmingnya :(

    ReplyDelete

Post a Comment

Previous Post Next Post