正在载入在线练习界面,本页内容可直接阅读…

AK CSP › CSP-S 2021 第一轮真题 › 第19题

CSP-S 2021 第一轮 第19题:(2分)当输入为“00011θ01”时,输出为“1.3090”。(

阅读程序·判断 · 初等数学与数学库函数 · 答案 T

题目

#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 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$ ,完成下面的判断题和单选题:

本小题

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

选项

  • T. 正确
  • F. 错误

答案

T

题解

选 T(正确)。代入程序计算即可:

输入对应: \[ (a_1,b_1,c_1,d_1)=(0,0,0,1),\quad (a_2,b_2,c_2,d_2)=(1,0,0,1) \]

于是: \[ t=(0-1)^2+(0-0)^2+(0-0)^2=1 \]

两个判断条件分别为:

  • \(1\le (1-1)^2=0\),不成立。
  • \(1\ge (1+1)^2=4\),不成立。

因此进入 else,计算得: \[ x=y=1-\frac{1-1+1}{\sqrt1\times2}=0.5 \]

注意 \(r=\arccos(0.5)=\frac{\pi}{3}\),所以输出的值为: \[ \left[0.5^2(3-0.5)+0.5^2(3-0.5)\right]\frac{\pi}{3} =\frac{5\pi}{12} \approx1.308996939 \]

程序使用定点格式保留 4 位小数,输出为 1.3090,故判断正确。

真题版权归 CCF 所有,本站仅用于非商业教学用途。页面加载后可直接在线作答,作答记录保存在本浏览器或账号中。 京ICP备2026056990号-1 京公网安备11010502062986号