⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d.cpp

📁 这是上海题的acm决赛题
💻 CPP
字号:
#include <fstream>
#include <cmath>
#include <iostream>

using namespace std;

ifstream fin("d.in");
//#define endl '\n'
//#define double long double

const double PI = acos(0.0) * 2;

main() {
   cout.precision(3);
   cout.setf(ios::fixed, ios::floatfield);
   int cases, pcase;
   fin >> cases;
   for (pcase = 0; pcase < cases; pcase++) {
      double a, b, c, tmp;
      fin >> a >> b >> c;

      if (a > b) tmp = a, a = b, b = tmp;
      if (a > c) tmp = a, a = c, c = tmp;
      if (b > c) tmp = b, b = c, c = tmp;

      double p = (a + b + c) / 2, s = sqrt(p * (p - a) * (p - b) * (p - c));
      double DM = sqrt((a * a + b * b + c * c + 4 * sqrt(3.0) * s) / 2);
      double cosC = (a * a + b * b - c * c) / (2 * a * b);
      if (acos(cosC) > 2 * PI / 3 - 1e-8) cout << a + b << ' '; else cout << DM << ' ';

      double x = (a + b - c) / 2, y = (a - b + c) / 2, z = (-a + b + c) / 2, h = s / p;
      double DI = sqrt(x * x + h * h) + sqrt(y * y + h * h) + sqrt(z * z + h * h);
      cout << DI << ' ';

      double DG = 2.0 / 3 *
                 (sqrt((2 * (a * a + b * b) - c * c) / 4)
                + sqrt((2 * (a * a + c * c) - b * b) / 4)
                + sqrt((2 * (b * b + c * c) - a * a) / 4));
      cout << DG << ' ';

      double DO = 3 * (c / 2 / sqrt(1 - cosC * cosC));
      if (fabs(a + b - c) < 1e-8) cout << -1.0 << endl; else cout << DO << endl;
   }

   return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -