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.










