zoukankan      html  css  js  c++  java
  • hdu1798几何公式

    主要就是推公式了,我推了老半天,囧啊。。。还要注意一点就是内切的情况,开始没考虑,WA了一次。

    /*
     * hdu1798/win.cpp
     * Created on: 2012-7-9
     * Author    : ben
     */
    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <ctime>
    #include <iostream>
    #include <algorithm>
    #include <queue>
    #include <set>
    #include <map>
    #include <stack>
    #include <string>
    #include <vector>
    #include <deque>
    #include <list>
    #include <functional>
    #include <numeric>
    #include <cctype>
    using namespace std;
    
    const double pi = acos(-1);
    
    inline double mydistance(double x1, double y1, double x2, double y2) {
        return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    }
    
    int main() {
    #ifndef ONLINE_JUDGE
        freopen("data.in", "r", stdin);
    #endif
        double x1, y1, r1, x2, y2, r2;
        while(scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &r1, &x2, &y2, &r2) == 6) {
            double d = mydistance(x1, y1, x2, y2);
            double ans;
            if(d >= r1 + r2) {//相离或外切
                ans = 0;
            }else  if(d <= fabs(r1 - r2)) {
                    if(r1 <= r2) {
                        ans = pi * r1 * r1;
                    }else {
                        ans = pi * r2 * r2;
                    }
            }else {
                double x = (d * d + r2 * r2 - r1 * r1) / d / 2;
                double p1 = r1 * r1 * acos((d - x) / r1);
                double p2 = r2 * r2 * acos(x / r2);
                double p3 = d * sqrt(r2 * r2 - x * x);
                ans = p1 + p2 - p3;
            }
            printf("%.3f\n", ans);
        }
        return 0;
    }
  • 相关阅读:
    JavaScript 字符串常用操作
    Redis分布式锁
    CSS布局之-水平垂直居中
    vuejs学习笔记(1)--属性,事件绑定,ajax
    Angular.js学习笔记 (一)
    几年前写的一个支持多数据库切换的设计
    bundle中vim相关快捷键的使用
    使用Bundle进行VIM插件的管理
    javascript代码在线测试
    线程池的创建
  • 原文地址:https://www.cnblogs.com/moonbay/p/2584062.html
Copyright © 2011-2022 走看看