Problem:
Score : 200 points

Problem Statement

Given is a sequence of N integers A_1, \ldots, A_N.

Find the (multiplicative) inverse of the sum of the inverses of these numbers, \frac{1}{\frac{1}{A_1} + \ldots + \frac{1}{A_N}}.

Constraints

1 \leq N \leq 100

1 \leq A_i \leq 1000

Input

Input is given from Standard Input in the following format:

N
A_1 A_2 \ldots A_N

Output

Print a decimal number (or an integer) representing the value of \frac{1}{\frac{1}{A_1} + \ldots + \frac{1}{A_N}}.

Your output will be judged correct when its absolute or relative error from the judge's output is at most 10^{-5}.

Sample Input 1

2
10 30

Sample Output 1

7.5

\frac{1}{\frac{1}{10} + \frac{1}{30}} = \frac{1}{\frac{4}{30}} = \frac{30}{4} = 7.5.

Printing 7.50001, 7.49999, and so on will also be accepted.

Sample Input 2

3
200 200 200

Sample Output 2

66.66666666666667

\frac{1}{\frac{1}{200} + \frac{1}{200} + \frac{1}{200}} = \frac{1}{\frac{3}{200}} = \frac{200}{3} = 66.6666....

Printing 6.66666e+1 and so on will also be accepted.

Sample Input 3

1
1000

Sample Output 3

1000

\frac{1}{\frac{1}{1000}} = 1000.

Printing +1000.0 and so on will also be accepted.

Solution in C# (Mono 4.6.2.0) (judge verdict: Accepted)

using System;
using System.Linq;
class Program {
    static void Main (string[] args) {
        // 整数の入力
        int N = int.Parse (Console.ReadLine ());
        // var s = Console.ReadLine ();
        // if (N >= 3200) {
        //     Console.Write (s);
        // } else {
        //     Console.Write ("red");
        // }
        // int[] numbers = new int[N];
        float ans = 0;
        string[] input = Console.ReadLine ().Split (' ');
        int[] numbers = input
            .Select (int.Parse)
            .ToArray ();
        for (int i = 0; i < N; i++) {
            //  numbers[i] = int.Parse (Console.ReadLine ());
            ans += (float)1 / numbers[i];
        }
        Console.Write ((float)1 / ans);

        // int cnt = 1;
        // int tmp1 = numbers[0]; //見始め
        // int tmp = numbers[1];
        // for (int i = 1; i < N; i++) {
        //     if (numbers[i] < tmp) {
        //         cnt += 1;
        //         if (numbers[i] <= tmp1) {
        //             cnt += 1;
        //             tmp1 = numbers[i];
        //         }
        //         tmp = numbers[i];
        //     } else if (numbers[i] == tmp) {
        //         cnt += 1;
        //     } else {

        //     }
        // }
        // Console.WriteLine (cnt);
        // // int D = int.Parse (Console.ReadLine ());
        // string[] input = Console.ReadLine ().Split (' ');
        // int[] numbers = input
        //     .Select (int.Parse)
        //     .ToArray ();
        // int N = numbers[0];
        // int D = num[1];
        // int X = 2*D+1;
        // int cnt = 1;

        // while(true){
        //     if(cnt*X / N >= 1){
        //         break;
        //     }else{
        //         cnt += 1;
        //     }
        // }
        // スペース区切りの整数の入力
        // string[] input = Console.ReadLine ().Split (' ');

        // int[] numbers = input
        // .Select (int.Parse)
        // .ToArray ();
        // int count = 0;

        // while (true) {
        //     bool ck = cheCk (a, numbers);
        //     if (check) {
        //         numbers = Divide (a, numbers);
        //         count += 1;
        //     } else {
        //         break;
        //     }
        // }
        //出力
        // Console.WriteLine (cnt);
    }

    // public static bool Check (int a, int[] numbers) {
    //     bool check = true;
    //     for (int i = 0; i < a; i++) {
    //         if (numbers[i] % 2 != 0) {
    //             check = false;
    //         }
    //     }
    //     return check;
    // }

    // public static int[] Divide (int a, int[] num){ 
    //     for (int i = 0; i < a; i++) {
    //         numbers[i] /= 2;
    //     }
    //     return numbers;
    // }
}