PRoblem Description “ 改革春風吹滿地, 不會AC沒關(guān)系; 實在不行回老家, 還有一畝三分地。 謝謝!(樂隊奏樂)”
話說部分學生心態(tài)極好,每天就知道游戲,這次考試如此簡單的題目,也是云里霧里,而且,還竟然來這么幾句打油詩。 好呀,老師的責任就是幫你解決問題,既然想種田,那就分你一塊。 這塊田位于浙江省溫州市蒼南縣靈溪鎮(zhèn)林家鋪子村,多邊形形狀的一塊地,原本是linle 的,現(xiàn)在就準備送給你了。不過,任何事情都沒有那么簡單,你必須首先告訴我這塊地到底有多少面積,如果回答正確才能真正得到這塊地。 發(fā)愁了吧?就是要讓你知道,種地也是需要AC知識的!以后還是好好練吧…
Input 輸入數(shù)據(jù)包含多個測試實例,每個測試實例占一行,每行的開始是一個整數(shù)n(3<=n<=100),它表示多邊形的邊數(shù)(當然也是頂點數(shù)),然后是按照逆時針順序給出的n個頂點的坐標(x1, y1, x2, y2… xn, yn),為了簡化問題,這里的所有坐標都用整數(shù)表示。 輸入數(shù)據(jù)中所有的整數(shù)都在32位整數(shù)范圍內(nèi),n=0表示數(shù)據(jù)的結(jié)束,不做處理。
Output 對于每個測試實例,請輸出對應(yīng)的多邊形面積,結(jié)果精確到小數(shù)點后一位小數(shù)。 每個實例的輸出占一行。
Sample Input 3 0 0 1 0 0 1 4 1 0 0 1 -1 0 0 -1 0
Sample Output 0.5 2.0
看起來難其實很簡單,就是給你兩個點,然后第三個點為原點,求三角形面積。多邊形可以看出多個三角形相加。
import java.util.Scanner; public class Main{ public static void main(String[] args){ Scanner scanner=new Scanner(System.in); while(scanner.hasNext()){ int n=scanner.nextInt(); int i; if(n==0){ break; } else { int[] x=new int[100]; int[] y=new int[100]; double sum=0; for(i=0;i<n;i++){ x[i]=scanner.nextInt(); y[i]=scanner.nextInt(); } for(i=0;i<n-1;i++){ sum+=x[i]*y[i+1]-x[i+1]*y[i]; } sum+=x[i]*y[0]-x[0]*y[i]; System.out.println(sum/2); } } } }新聞熱點
疑難解答