Pembahasan Penyisihan JBITC 2013

Hari minggu kemarin, tanggal 22 September ada satu penyisihan lomba, yaitu Java Bali IT Competition 2013. Sebenarnya kontes ini cuma refreshing-lah setelah Final Compfest 2013 kemarin. Well, final kemarin kacau! -_- saya gak solve apa-apa, 2 soal ngebug parah, dan baru nyadar solusinya pas scoreboard udah difreeze. Tapi tak apa, yang penting masuk final, dan dapet kaos compfest🙂. Tapi sedikit kecewa karena gak bisa ikut acara puncak yang (katanya) rame parah karena dapet dispensasi cuma hari jumat-sabtu, gak sampe senin ._.

Oke, kembali ke JBITC. Kontes ini bisa dibilang unik, karena pengumpulan soal melalui email, tidak melalui online web grader seperti kontes-kontes lainnya, karena itu juga saya tidak tahu apakah kode saya accepted atau tidak. Tapi soalnya bisa dibilang mudah, mudah banget malah😀

Di kontes ini, saya (kayaknya) solve 4 dari 5 soal. Saya masih belum tahu hasilnya, tapi karena program-program saya sesuai sama testcase di soal, maka akan saya bahas disini.

Update : hasil baru keluar hari ini, alhamdulillah lolos ke semifinal, tapi scoreboard gak ditampilin:/

Untuk soal bisa dilihat disini

Pembahasan :

Soal 1

Cukup sorting biasa, dari 1 ke 10. Terus lakukan operasi perkalian n dengan output seperti yang ada di soal.  Kompleksitasnya O(N).

Kode :

#include <iostream>
using namespace std;
int main() {
	int n;
	cin >> n;
	for (int i=1;i<=10;i++) {
		cout << n << "*" << i << "=" << n*i << endl;
		}
	}

Soal 2

Solusi simpelnya, cukup bikin perulangan dari integer ASCII ‘A’ sampai ‘Z’.  Nilai ASCII dari ‘A’ adalah 65, dan nilai ASCII dari ‘Z’ adalah 90.

Kode :

#include <iostream>
#include <cstring>
using namespace std;
int main() {
	for (int i=65;i<=90;i++) {
		cout << (char)i << " ";
		}
	}

Soal 3

Soal pola. Kalau solusi saya, pertama perhatiin polanya dulu. Bintang di sebelah paling kiri biasanya berpindah posisi sebanyak 1 langkah setiap perulangan, dan bintang di sebelah paling kanan biasanya berpindah posisi sebanyak 2 langkah setiap perulangan. Nah, jadi bikin decision jika nilai j antara kiri dan kanan, maka cetak bintang, selain itu biarin aja.

Selesai? Belum. Perhatikan lagi, saat baris ke n/2, polanya berubah. Yang awalnya perubahan jumlah bintang dari kiri ke kanan, kembali dari kanan ke kiri. Maka bikin decision lagi, jika i>n maka nilai kiri berbalik jadi dikurangi 1, dan nilai kanan jadi dikurangi 2 setiap perulangan.

Kode :

#include <iostream>
using namespace std;
int main() {
	int n;
	cin >> n;
	int awal,akhir;
	awal=1;
	akhir=1;
	for (int i=1;i<=n*2;i++) {
		for (int j=1;j<=n*2;j++) {
			if (j>=awal && j<=akhir) cout << "*";
			else cout << " ";
			}
		cout << endl;
		if (i<=n) {
		awal++;
		akhir+=2;
		}
		else {
			awal--;
			akhir-=2;
			}
		}
		cout << "*" << endl;
	}

Soal 4

Soal bilangan prima. Mari kita ingat definisi bilangan prima, yaitu hanya bisa habis dibagi oleh 1 dan bilangan itu sendiri. Jadi solusinya adalah bikin perulangan dari n-1 ke 2. Jika n mod i=0, maka nilai count bertambah 1. Jika nilai count lebih besar dari 0, maka bukan bilangan prima, selain itu maka bilangan prima.

Kode :

#include <iostream>
using namespace std;
int main() {
	int n,d=0;
	cin >> n;
	int c;
	for (int i=n-1;i>1;i--) {
		if (n%i==0) d++;
		}
	if (d>=1) cout << "Bukan Bilangan Prima\n";
	else if (d==0) cout << "Bilangan Prima\n";
	}

Soal 5

Karena baterai laptop low critical, begitu baca soal ini langsung mati laptopnya, sekian. Untung udah submit soal 4 terlebih dahulu.😀

~~

Sekian dari pembahasan saya. Komentar, kirik, saran, dan hujatan bisa disampaikan di komentar. Akhir kata, semoga bermanfaat!😀

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s