zoukankan      html  css  js  c++  java
  • [Swust OJ 771]--奶牛农场(几何题,画图就好)

    题目链接:http://acm.swust.edu.cn/problem/771/

     

     Description

    将军有一个用栅栏围成的矩形农场和一只奶牛,在农场的一个角落放有一只矩形的箱子,有一天将军要出门,他就把奶牛用一根绳子套牢,然后将绳子的另一端绑到了那个箱子不靠栅栏的角上,现在给定箱子的长和宽,绳子的长度,你的问题是计算奶牛能够到达的面积。

     
    Input

    有多组测试数据。 每一组数据为一行,三个整数,L(0<=L<=500),M,N(1<=M,N<=500),分别表示绳子的长度,箱子的两边长度。假设农场无限大。

     
    Output

    对于每一组测试数据,输出奶牛能够到达的面积,保留两位小数。

     
    Sample Input
    1 1 1
    Sample Output
     
    2.36

    解题思路:就一个几何题,画图就可以了,可以看看下面的图的分析
     
     
     
     
     
     
     
     
     
    代码如下:
     1 //箱子在角落里---、--
     2 #include <stdio.h>
     3 #include <math.h>
     4 #define  PI  acos(-1.0)
     5 #define minn(a,b) a<b?a:b
     6  
     7 int main() {
     8     double L, M, N, area;
     9     while (scanf("%lf %lf %lf", &L, &M, &N) != EOF) {
    10         if (L <= M&&L <= N)
    11             area = 0.75 * PI * L * L;
    12         //一个三角形,加一个扇形
    13         else if (L <= M || L <= N){
    14             M = minn(M, N);
    15             area = (sqrt((L * L) - (M * M)) * M) / 2.0;
    16             N = (acos(M / L) * (180.0 / PI));
    17             area += (270.0 - N) / 360.0 * PI * L * L;
    18         }
    19         //两个三角形,加一个扇形
    20         else {
    21             area = sqrt(L * L - M * M) * M / 2.0;
    22             area += sqrt(L * L - N * N) * N / 2.0;
    23             area += (270.0 - ((acos(M / L) + acos(N / L)) * (180.0 / PI))) / 360.0 * PI * L * L;
    24         }
    25         printf("%.2lf
    ", area);
    26     }
    27     return 0;
    28 }
     
  • 相关阅读:
    java学习(一)
    linux下java环境配置
    移动平台开发团队展示
    VS的安装项目:解决安装后注册表中程序信息InstallLocation为空的问题
    .NET将数据导出到Excel表(如何指定默认文件名)
    Linux Shell编程入门
    http与WebSocket
    git push时报错filename too long的解决
    js中传统事件绑定模拟现代事件处理
    对三次握手的理解
  • 原文地址:https://www.cnblogs.com/zyxStar/p/4593348.html
Copyright © 2011-2022 走看看