Snowman (SNOWMAN)
(klik di sini untuk soal)
Source Code (dalam C)
#include <stdio.h> #include <math.h>
#define PI 3.14159265
int main() { int t; double v, r, h;
scanf("%d", &t);
while(t--) { scanf("%lf", &v);
r = pow( (48*v) / (129*PI), 1.0/3.0); h = 4 * r + 0.5 * r; h = floor(h);
printf("%d\n", (int)h); printf("\n"); }
return 0; }
Analisis Algoritma
Untuk mencari volume sebuah bola, kita dapat menggunakan rumus:
V = 4/3 * pi * r^3
Karena manusia salju yang akan dibuat terdiri dari tiga bola, dengan dua bola memiliki ukuran yang sama dan satu bola memiliki jari-jari 25% dari bola yang lebih besar, maka rumus volume totalnya menjadi:
Vtotal = 2 * Vbesar + Vkecil
= 2 * 4/3 * pi * r^3 + 4/3 * pi * [(1/4)r]^3
= 8/3 * pi * r^3 + 4/3 * 1/64 * pi * r^3
= 8/3 * pi * r^3 + 1/48 * pi * r^3
= 129/48 * pi * r^3
Melalui rumus tersebut, kita dapat menemukan jari-jari dari bola yang besar.
r^3 = 48/(129 * pi) * Vtotal
r = [ 48/(129 * pi) * Vtotal]^1/3
Sekarang kita sudah menemukan panjang jari-jari dari bola yang besar, sehingga kita bisa menemukan tinggi dari manusia salju. Ingat bahwa manusia salju tersebut terdiri dari dua bola yang sama besar dan satu bola yang jari-jarinya 25% dari bola yang besar, sehingga untuk menemukan tingginya, kita menggunakan rumus berikut:
Ttotal = Tbesar + Tkecil
= 4 * r + 2 * 1/4 * r
= 9/2 * r
Karena soal meminta untuk membulatkan jawaban ke integer terkecil, maka kita menggunakan fungsi floor() dan men-typecast variabel untuk tinggi menjadi integer.













