#GOC22875. 路程

路程

题目描述

奶牛Bessie要从家里出发,去超市购买一些圣诞礼物,但是Bessie之前没去过超市,怎么办呢?农夫FJ给出了M条指令,指令的格式是:X Y,指令的意义是沿着X方向走Y米。上面指令的X是一个字符,‘N’表示向北、‘S’表示向南、‘W’表示向西、‘E’表示向东。

当Bessie执行完FJ给出的M条指令后,就到达超市了。Bessie是个聪明的奶牛,知道两点之间走直线的距离最短,所以在返程时,Bessie从超市走直线回到家。

那么Bessie总共走过的路程总和是多少?

【输入格式】c.in

 第一行,一个整数M。

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

【输出格式】c.out

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

![](./2094/file/img01.png)


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

【帮助说明】

一、C++语言保留6位小数的做法:

1、要包含头文件:  #include<iomanip>

2、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 <cmath>。

例如:已知直角三角形的两条直角边长分别是:a=3.0, b=4.0,那么直角三角形的斜边c的长度= sqrt(a*a+b*b);

#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。