二、阅读程序-1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | #include <iostream> #include <cmath> using namespace std; const double r = acos(0.5); int a1, b1, c1, d1; int a2, b2, c2, d2; inline int sq(const int x) { return x * x; } //inline的作用是减少函数的开销 inline int cu(const int x) { return x * x * x; } int main() { cout.flags(ios::fixed); cout.precision(4); cin >> a1 >> b1 >> c1 >> d1; cin >> a2 >> b2 >> c2 >> d2; int t = sq(a1 - a2) + sq(b1 - b2) + sq(c1 - c2); if (t <= sq(d2 - d1)) cout << cu(min(d1, d2)) * r * 4; else if (t >= sq(d2 + d1)) cout << 0; else { double x = d1 - (sq(d1) - sq(d2) + t) /sqrt(t)/2; double y = d2 - (sq(d2) - sq(d1) + t) / sqrt(t)/2; cout << (x * x * (3 * d1 - x) + y * y * (3 * d2 - y)) * r; } cout << endl; return 0; } |
假设输入的所有数的绝对值都不超过1000,完成下面的判断题和单选题:
