2273 . 综合题

阅读程序【CSP 2021 提高级第一轮1】

#include <iostream>
#include <cmath>
using namespace std;

const double r = acos(0.5);

int al, bl, cl, d1;
int a2, b2, c2, d2;

inline int sq(const int x) { return x * x; }
inline int cu(const int x) { return x * x * x; }

int main() 
{
    cout.flags(ios::fixed);
    cout.precision(4);

    cin >> al >> bl >> cl >> d1;
    cin >> a2 >> b2 >> c2 >> d2;

    int t = sq(al - a2) + sq(bl - b2) + sq(cl - 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 ,完成下面的判断题和单选题:

1 . (判断题)

将第 21 行中 t 的类型声明从 int 改为 double, 不会 影响程序运行的结果。()

2 . (判断题)

将第 26、27 行中的 / sqrt(t) / 2替换为/ 2 / sqrt(t),不会影响程序运行的结果。( )

3 . (判断题)

将第 28 行中的 x * x 改成 sq(x)y * y 改成 sq(y),不会影响程序运行的结果。( )

4 . (判断题)

当输入为 0 0 0 1 1 0 0 1 时,输出为 1.3090 ( )

5 . (单选题)

当输入为 1 1 1 1 1 1 1 2 时,输出为( )

6 . (单选题)

这段代码的含义为( )