A - Bujur Sangkar Ajaib
Author: Ryan Leonel SomaliSoal ini adalah soal termudah di babak penyisihan. Yang perlu kita lakukan hanya menjumlahkan 1 sampai n2 kemudian bagi hasilnya dengan n. Untuk n <= 100, solusi O(n2) dengan menjumlahkan semua bilangan dari 1 hingga n2 sudah cukup untuk mendapatkan accepted. Namun jika anda mau, solusi soal ini bisa dioptimasi menjadi O(1) dengan rumus:
ans = (1 + 2 + 3 + ... + n2) / nans = (n2 * (n2 + 1) / 2) / n
ans = n * (n2 + 1) / 2
Total 43 peserta berhasil menyelesaikan soal ini.
Solusi C/C++
oleh Ryan Leonel Somali
#include <stdio.h> int main() { int n, T; scanf( "%d", &T ); while ( T-- ) { scanf( "%d", &n ); printf( "%d\n", (n * n + 1) * n / 2 ); } }
Solusi PASCAL
oleh Eko Wibowo
var i, n, T, x : longint; begin read(T); for i := 1 to t do begin read(n); x := ((n * n + 1) * n) div 2; writeln(x); end; end.