Soal pun gw baca… soal pertama itu tentang geometri dan langsung gw skip dluw, kemudian soal ke-2 soal DP / Greedy tentang monyet gitu dhe.. terus soal ke-3 adalah soal MU vs Chelsea… langsung kuliat dulu input dan outputnya, dan ternyata ini masalah precission error… so, gw lewatin… dan baca lagi problem ke-4 yang berjudul Number of Divisors… dan menurut gw gampang… jika saja input yang di berikan dibawah dari 1jt… karena gw lupa cara cepatnya, ini soal langsung gw hajar pake bruteforce sampai dengan sqrt (Square Root).. setelah gw submit, TLE… as i thought…
akhirnya gw liat ranking dan Aditya dari CC udah AC problem H… dan gw langsung baca problem H itu, ternyata ini soal O(N^2) (Nested Loop) doang… langsung gw attack trus submit dan AC untuk submit yang pertama…
Soal H ( 1 2 Hop!)
yah, ini soal yang sangat mudah ! bahkan kalo kubilang, ini soal bonus aja… karena ini soal Ad Hoc yang gk ada algoritma spesifiknya… tinggal di loop aja.. algo nya kek gini (this is very simple.. basic banget !)
#include<stdio.h> int main() { int nTC, N; scanf("%d", &nTC); while(nTC--) { scanf("%d", &N); if (N > 9) { printf("what?\n"); continue; } for (int i=1;i<=N;i++) { for (int j=1; j<=N; j++) { printf((j == N) ? (i == N) ? "hop!\n" : "hop! " : "%d ", j); } } } }
That is !!
setelah gw mengerjakan soal ini, gw mencoba terus attack soal Lining Up ! dan Soal Number of divisors…
*ini gw kerjain setelah gw sampe dirumah…*
Problem D (Number of Divisors)
Hum, untuk soal yang ini, pada saat lomba, gw gk inget teorinya sama skali… tapi ini teorinya ada lah gini… kita mencari ada berapa faktor prima yang ada pada angka itu… misal seperti
6^2 = 36… —> maka ini kita uraikan menjadi ((2^1) * (3^1))^2… maka divisorsnya akan menjadi ((1*2 + 1) * (1*2 + 1)) = 9
Hehehe… Simple tapi gk terpikirkan sama gw waktu itu… ok sekarang source codenya langsung saja gw kasi dhe
#include<stdio.h> #include<math.h> int main() { int nTC,x,y; scanf("%d", &nTC); while (nTC--) { scanf("%d %d", &x, &y); int n=x,ans=1; for (int i = 2; i<=x; i++) { if (n%i == 0) { int counter=0; while( ((n%i) == 0) && (n != 0) ) { counter++; n/=i; } ans*= ((counter*y) + 1); } } printf("Number of divisor of %lld is %d\n", (long long)pow(x,y), ans); } }
Problem E (Lining Up !)
* UPDATED !! * setelah gw mencoba untuk memahami lg soalnya, gw kotak katik lg, ini versi yang 100% bener…
#include<stdio.h> int ws, qs[1010]; int main() { int nTC,N; scanf("%d", &nTC); while(nTC--) { scanf("%d", &N); for (int i=0; i<N; i++) qs[i] = i+1; for (int i=1; i<=N;i++) { scanf("%d", &ws); printf( (i == N) ? "%d\n" : "%d ", qs[ws]); for (int j = ws; j <= N; j++) qs[j] = qs[j+1]; } } return 0; }
That’s It Again !!
dan, ternyata sampai akhir, i have no luck… akhirnya mau gk mau, selesai hanya dengan 1 soal selesai dhe…
Wish Me More Luck Next Time !!
Thanks For :
- kk Felix Halim - Thanks kk dah bimbing aku
semoga kk gk bosen2 untuk bimbing aku.. - Sally - Yang udah dukung aku selama ini… (Makasih yah hun… mwah)
- Bu Linda O.K - Selaku Kepala Sekolah SMA Santo Leo yang udah dukung gw..
- Teman2 Sekolah - Thanks buat Doanya… Walau hanya bisa Juara 14 >.<
- My Parents - Yang udah dukung dengan nganter, beli buku, dlsb.. hehehe..
*Link Soal, serta solusi yang lain menyusul :)*