织女的红线_JAVA
Description
好久不見(jiàn)牛郎哥哥了,織女非常想他,但是她想考驗(yàn)一下牛郎在她不在的日子里有沒(méi)有好好學(xué)習(xí)天天向上,于是乎
想出一個(gè)問(wèn)題考一考他。織女找了一跟很細(xì)的紅線和N顆相同的釘子,將各顆釘子釘在墻上作為一個(gè)多邊
形的各個(gè)頂點(diǎn),然后將紅線纏在各個(gè)釘子上圍成了多邊形,多余的剪掉。下面給出了圖示。
可惜牛郎不會(huì)算,悲劇了,但他不想讓織女失望,還好有你這個(gè)朋友,你的任務(wù)是幫他計(jì)算出紅線的長(zhǎng)度。
Input
在輸入數(shù)據(jù)的第一行有兩個(gè)數(shù):N——釘子的數(shù)目(1 <= N <= 100),R——釘子的半徑。所有的釘子半徑
相同。接下來(lái)有N行數(shù)據(jù),每行有兩個(gè)空格隔開(kāi)的實(shí)數(shù)代表釘子中心的坐標(biāo)。坐標(biāo)的絕對(duì)值不會(huì)超過(guò)
100。釘子的坐標(biāo)從某一顆開(kāi)始按照順時(shí)針或逆時(shí)針的順序給出。不同的釘子不會(huì)重合。
Output
輸出一個(gè)實(shí)數(shù)(小數(shù)點(diǎn)后保留兩位)————紅線的長(zhǎng)度。
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的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 最佳拟合直线_JAVA
- 下一篇: 分数加减法_JAVA