#GC4057. GC.2016.六年级.03.路程

GC.2016.六年级.03.路程

题目描述
奶牛Bessie要从家里出发,去超市购买一些圣诞礼物,但是Bessie之前没去过超市,怎么办呢?农夫FJ给出了M条指令,指令的格式是:X Y,指令的意义是沿着X方向走Y米。上面指令的X是一个字符,'N'表示向北、'S'表示向南、'W'表示向西、'E'表示向东。
当Bessie执行完FJ给出的M条指令后,就到达超市了。Bessie是个聪明的奶牛,知道两点之间走直线的距离最短,所以在返程时,Bessie从超市走直线回到家。
那么Bessie总共走过的路程总和是多少?

输入格式
第一行,一个整数M。
接下来有M行,每行的格式是:X和Y,其中X是‘N’、‘S’、‘W’、‘E’四种字符之一。 Y是一个正整数。

数据范围
1<=M<=50, 1<=Y<=50。

输出格式
一个实数。答案四舍五入保留6位小数。

样例

3
N 1
E 3
S 3
10.605551
4
N 15
N 15
S 25
S 5
60.000000

样例解释
对于样例一,解释入下图:
img

帮助说明

  • C++语言保留6位小数的做法:
    • 要包含头文件: #include
    • cout<<fixed<<setprecision(6)<<a<<endl; //变量a四舍五入保留6位小数
      例如:下面的代码运行后,输出123.456789
#include <iostream>
#include <iomanip>
int main()
{
    double a = 123.4567885;
    cout<<fixed<<setprecision(6)<<a<<endl;
    return 0;
}
  • C++开平方根可以用sqrt函数,记得包含头文件#include 。
    例如:已知直角三角形的两条直角边长分别是:a=3.0, b=4.0,那么直角三角形的斜边c的长度= sqrt(aa+bb);
#include <iostream>
#include <iomanip>
#include <cmath>
int main()
{
  double a = 3.0, b=4.0;
  double c = sqrt(a*a+b*b);
  cout<<fixed<<setprecision(6)<<c<<endl;
   return 0;
}

上面的程序将会输出5.000000。