Problem:
MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Distance II

Your task is to calculate the distance between two $n$ dimensional vectors $x = \{x_1, x_2, ..., x_n\}$ and $y = \{y_1, y_2, ..., y_n\}$.

The Minkowski's distance defined below is a metric which is a generalization of both the Manhattan distance and the Euclidean distance.

\[
D_{xy} = (\sum_{i=1}^n |x_i - y_i|^p)^{\frac{1}{p}}
\]

It can be the Manhattan distance

\[
D_{xy} = |x_1 - y_1| + |x_2 - y_2| + ... + |x_n - y_n|
\]

where $p = 1 $.

It can be the Euclidean distance

\[
D_{xy} = \sqrt{(|x_1 - y_1|)^{2} + (|x_2 - y_2|)^{2} + ... + (|x_n - y_n|)^{2}}
\]

where $p = 2 $.

Also, it can be the Chebyshev distance

\[
D_{xy} = max_{i=1}^n (|x_i - y_i|)
\]

where $p = \infty$

Write a program which reads two $n$ dimensional vectors $x$ and $y$, and calculates Minkowski's distance where $p = 1, 2, 3, \infty$ respectively.

Input

In the first line, an integer $n$ is given. In the second and third line, $x = \{x_1, x_2, ... x_n\}$ and $y = \{y_1, y_2, ... y_n\}$ are given respectively. The elements in $x$ and $y$ are given in integers.

Output

Print the distance where $p = 1, 2, 3$ and $\infty$ in a line respectively.
The output should not contain an absolute error greater than 10-5.

Constraints

$1 \leq n \leq 100$

$0 \leq x_i, y_i \leq 1000$

Sample Input

3
1 2 3
2 0 4

Sample Output

4.000000
2.449490
2.154435
2.000000

Solution in C# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ITP1_10_D
{
    class Program
    {
        static void Main(string[] args)
        {
            // 2つのn次元ベクトルx={x(1)～x(n)}とy={y(1)～y(n)}
            // ミンコフスキー距離：上記を計算する指標の一つ
            // D(xy)=(Σ(i=1～n)((|x(i)-y(i)|)^p)^(1/2)
            // p=1の時(マンハッタン距離)：D(xy)=Σ|x(i)-y(i)|
            // p=2の時(ユークリッド距離)：     =√(D(xy))
            // p=∞の時（チェビシェフ距離）：  =max(i=1～n)(|x(i)-y(i)|)

            // 2つの与えられたn次元ベクトルより、p=1,2,3,∞の順に出力するプログラム

            int n = int.Parse(Console.ReadLine());
            int[] x = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            int[] y = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();

            double p1 = 0;
            double p2 = 0;
            double p3 = 0;
            double lim = 0;

            
            int[] array = new int[n];

            for (int i = 0; i < n; i++)
            {
                array[i] = Math.Abs(x[i] - y[i]);               // |x(i)-y(i)|の要素をすべて含む配列を作成

                p1 += array[i];                                 //  p=1 の時(マンハッタン距離)

                p2 += Math.Pow(array[i], 2);                    

                p3 += Math.Pow(array[i], 3);                    
            }

            p2 = Math.Pow(p2, 1.0 / 2.0);                       // p=2 の時(ユークリッド距離)

            p3 = Math.Pow(p3, 1.0 / 3.0);                       // p=3 の時

            lim = array.Max();                                  // チェビシェフ距離

            Console.WriteLine(p1);
            Console.WriteLine(p2);
            Console.WriteLine(p3);
            Console.WriteLine(lim);
        }

    }
}