zoukankan      html  css  js  c++  java
  • [SDJX2015]面积

    【问题描述:】

    一个六边形的每个内角均为120°,按顺时针给定它每条边的长度,求它的面积与边长为1的等边三角形的面积的比值。

    【输入:】

    一行六个整数a,b,c,d,e,f,表示六条边的长度。

    【输出:】

    一行一个整数表示面积的比值。

    【输入输出样例:】

    area.in

    area.out

    1 2 1 2 1 2

    13

    【数据范围:】

    对于全部的数据,1<=a,b,c,d,e,f<=1000;

    【思路】

           解法一:对余弦定理可以求出每两个不相邻顶点间的边,可以把六边形分成四个三角形用海伦公式求出面积即可。

           解法二:可以延长六边形个边把其变成一个大的等边三角形,可以推出新补得三角形都是等边三角形,用等边三角形面积公式求出并做差即可。

    【解法一】

    var a,b,c,d,e,f,ans,s1,s2,s3,t1,t2,t3,tt:real;
    function ss(x,y,z:real):real;
    var p:real;
    begin
        p:=(x+y+z)/2;
        ss:=sqrt(p*abs((p-x))*abs((p-y))*abs((p-z)));
    end;
    
    function yuxian(x,y:real):real;
    begin
        yuxian:=sqrt(x*x+y*y+x*y);
    end;
    //余弦定理
    
    begin
        assign(input,'area.in');
        assign(output,'area.out');
        reset(input);
        rewrite(output);
        ans:=0;
        readln(a,b,c,d,e,f);
        s1:=yuxian(a,b);
        t1:=ss(a,b,s1);
        ans:=ans+t1;
        s2:=yuxian(c,d);
        t2:=ss(c,d,s2);
        ans:=ans+t2;
        s3:=yuxian(e,f);
        t3:=ss(e,f,s3);
        ans:=ans+t3;
        tt:=ss(s1,s2,s3);
        ans:=ans+tt;
        tt:=ss(1,1,1);
        ans:=ans/tt;
        writeln(ans:0:0);
        close(input);
        close(output);
    end.
  • 相关阅读:
    模板学习系列(一)tuple
    apue读书笔记第十章
    在亚马逊上关于设计模式的一个评论
    编程珠玑笔记第12章习题
    编程珠玑第14章
    C#,.Net经典面试题目及答案
    sql where 1=1和 0=1 的作用(junyuz)
    快速排序算法
    一道面试题(C#实现了超大整数的加减乘法运算)
    数据结构实验之链表一:顺序建立链表
  • 原文地址:https://www.cnblogs.com/yangqingli/p/4714581.html
Copyright © 2011-2022 走看看