當(dāng)前位置:
首頁 >
织女的红线_JAVA
發(fā)布時(shí)間:2025/3/21
37
豆豆
生活随笔
收集整理的這篇文章主要介紹了
织女的红线_JAVA
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Description
好久不見牛郎哥哥了,織女非常想他,但是她想考驗(yàn)一下牛郎在她不在的日子里有沒有好好學(xué)習(xí)天天向上,于是乎
想出一個(gè)問題考一考他。織女找了一跟很細(xì)的紅線和N顆相同的釘子,將各顆釘子釘在墻上作為一個(gè)多邊
形的各個(gè)頂點(diǎn),然后將紅線纏在各個(gè)釘子上圍成了多邊形,多余的剪掉。下面給出了圖示。
可惜牛郎不會算,悲劇了,但他不想讓織女失望,還好有你這個(gè)朋友,你的任務(wù)是幫他計(jì)算出紅線的長度。
Input
在輸入數(shù)據(jù)的第一行有兩個(gè)數(shù):N——釘子的數(shù)目(1 <= N <= 100),R——釘子的半徑。所有的釘子半徑
相同。接下來有N行數(shù)據(jù),每行有兩個(gè)空格隔開的實(shí)數(shù)代表釘子中心的坐標(biāo)。坐標(biāo)的絕對值不會超過
100。釘子的坐標(biāo)從某一顆開始按照順時(shí)針或逆時(shí)針的順序給出。不同的釘子不會重合。
Output
輸出一個(gè)實(shí)數(shù)(小數(shù)點(diǎn)后保留兩位)————紅線的長度。
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