织女的红线_JAVA
生活随笔
收集整理的這篇文章主要介紹了
织女的红线_JAVA
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Description
好久不見牛郎哥哥了,織女非常想他,但是她想考驗一下牛郎在她不在的日子里有沒有好好學(xué)習(xí)天天向上,于是乎
想出一個問題考一考他。織女找了一跟很細(xì)的紅線和N顆相同的釘子,將各顆釘子釘在墻上作為一個多邊
形的各個頂點,然后將紅線纏在各個釘子上圍成了多邊形,多余的剪掉。下面給出了圖示。
可惜牛郎不會算,悲劇了,但他不想讓織女失望,還好有你這個朋友,你的任務(wù)是幫他計算出紅線的長度。
Input
在輸入數(shù)據(jù)的第一行有兩個數(shù):N——釘子的數(shù)目(1 <= N <= 100),R——釘子的半徑。所有的釘子半徑
相同。接下來有N行數(shù)據(jù),每行有兩個空格隔開的實數(shù)代表釘子中心的坐標(biāo)。坐標(biāo)的絕對值不會超過
100。釘子的坐標(biāo)從某一顆開始按照順時針或逆時針的順序給出。不同的釘子不會重合。
Output
輸出一個實數(shù)(小數(shù)點后保留兩位)————紅線的長度。
Sample
Input
4 1
0.0 0.0
2.0 0.0
2.0 2.0
0.0 2.0
Output
14.28
import java.util.Scanner;class Point{double x, y;public Point (double x, double y) {this.x = x;this.y = y;}public double js(Point a) {return Math.sqrt((x - a.x) * (x - a.x) + (y - a.y) * (y - a.y));} }public class Main {public static void main(String[] args) {Scanner reader = new Scanner(System.in);int n = reader.nextInt();double r = reader.nextDouble();Point p[] = new Point [n];double c = 2.0*Math.PI*r;for(int i = 0; i < n; i++){p[i] = new Point (reader.nextDouble(), reader.nextDouble());}for(int i = 0; i < n - 1; i++)c = c + p[i].js(p[i + 1]);c = c + p[0].js(p[n - 1]);System.out.printf("%.2f\n", c);reader.close();} }總結(jié)
以上是生活随笔為你收集整理的织女的红线_JAVA的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最佳拟合直线_JAVA
- 下一篇: 分数加减法_JAVA