• HDU 2036


    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
     
     
     
    这个题目一读就知道知识积累不够,然后在网上查找了多边形的面积公式。
    S = 0.5 * abs ( x1*y2 - x2*y1 + x2*y3 - x3*y2…… +xn*y1 -x1*yn)
     
    后面我用代码实现了公式,但是有点问题,输入事例之后一直输出0;
    其实要注意两点:
    1. S 用 double声明
    2. 公式里面别写1/2,写0.5。因为两个整数相除,结果也是整数,cout 1/2 其实就是 0;
     
    下面是代码
     1 #include <bits/stdc++.h>
     2 #define M 300
     3 using namespace std;
     4 
     5 int main(){
     6     int n;
     7     while (cin>>n){
     8         if(n == 0) return 0;
     9         
    10         
    11         int a[M];
    12         double S = 0;
    13         for(int i = 0; i < 2*n; i++)
    14             cin>>a[i];
    15     
    16         
    17         
    18         for(int i = 0; i < 2*n; i+=2){
    19             if( i == 2*n-2)
    20                 S = S + 0.5 * abs(a[i] * a[1] - a[i+1] * a[0]);
    21             else
    22                  S = 0.5 * abs(a[i]*a[i+3] - a[i+1]*a[i+2]) + S;
    23         
    24         }
    25         
    26         printf("%.1lf
    ",S);
    27         
    28     }
    29     return 0;
    30 } 

  • 相关阅读:
    Ubuntu配置sublime text 3的c编译环境
    ORA-01078错误举例:SID的大写和小写错误
    linux下多进程的文件拷贝与进程相关的一些基础知识
    ASM(四) 利用Method 组件动态注入方法逻辑
    基于Redis的三种分布式爬虫策略
    Go语言并发编程总结
    POJ2406 Power Strings 【KMP】
    nyoj 会场安排问题
    Server Tomcat v7.0 Server at localhost was unable to start within 45 seconds. If the server requires more time, try increasing the timeout in the server editor.
    Java的String、StringBuffer和StringBuilder的区别
  • 原文地址:https://www.cnblogs.com/stul/p/9869542.html
Copyright © 2020-2023  润新知