航电ACM [hdu 2036] 改革春风吹满地

改革春风吹满地

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 17423    Accepted Submission(s): 8897

Problem Description

“ 改革春风吹满地,

不会AC没关系;

实在不行回老家,

还有一亩三分地。

谢谢!(乐队奏乐)”

话说部分学生心态极好,每天就知道游戏,这次考试如此简单的题目,也是云里雾里,而且,还竟然来这么几句打油诗。

好呀,老师的责任就是帮你解决问题,既然想种田,那就分你一块。

这块田位于浙江省温州市苍南县灵溪镇林家铺子村,多边形形状的一块地,原本是linle 的,现在就准备送给你了。不过,任何事情都没有那么简单,你必须首先告诉我这块地到底有多少面积,如果回答正确才能真正得到这块地。

发愁了吧?就是要让你知道,种地也是需要AC知识的!以后还是好好练吧...

Input

输入数据包含多个测试实例,每个测试实例占一行,每行的开始是一个整数n(3<=n<=100),它表示多边形的边数(当然也是顶点数),然后是按照逆时针顺序给出的n个顶点的坐标(x1, y1, x2, y2... xn, yn),为了简化问题,这里的所有坐标都用整数表示。

输入数据中所有的整数都在32位整数范围内,n=0表示数据的结束,不做处理。

Output

对于每个测试实例,请输出对应的多边形面积,结果精确到小数点后一位小数。

每个实例的输出占一行。

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

分析

本题没有什么技巧,但是要知道任意多边形面积公式:

设Ω是m边形,P个顶点(P1、P2……Pn),坐标依次为(x1,y1)(x2,y2)……(xn,yn)

坐标原点与多边形任意相邻的两个顶点构成一个三角形,三角形的面积可由三个顶点构成的两个平面向量的外积求得。

多边形面积公式:

多边形面积公式的计算和原点的选取没有关系,通常选( 0 , 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();
            if (n == 0) return;
            int[] x = new int[3];
            int[] y = new int[3];
            x[0] = x[1] = scanner.nextInt();
            y[0] = y[1] = scanner.nextInt();
            float sum = 0;
            while (--n != 0) {
                x[2] = scanner.nextInt();
                y[2] = scanner.nextInt();
                sum += x[1] * y[2] - x[2] * y[1];
                x[1] = x[2];
                y[1] = y[2];
            }
            sum += x[2] * y[0] - x[0] * y[2];
            System.out.println(0.5 * sum);
        }
    }

}

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值