题目传送门:P10314 [SHUPC 2024] 函数

解函数题。


函数解读

函数 名称 $\operatorname{c++}$
$\arctan$ 反正切函数 $\operatorname{atan}(\operatorname{double} x)$
$\cot$ 余切函数 $1.0/\tan(\operatorname{double} x)$
$\pi$ 圆周率 std::numbers::pi

所以,我们可以得出代码:

1
inline double f(double x){return x - 0.5 + atan(1.0 / tan(std::numbers::pi * x)) / std::numbers::pi;}

CODE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <bits/stdc++.h>
using namespace std;

inline double f(double x){return x - 0.5 + atan(1.0 / tan(std::numbers::pi * x)) / std::numbers::pi;}

int main()
{
int T;
cin >> T;

while(T --)
{
double x;
cin >> x;
printf("%7f\n", f(x));
}
return 0;
}

Q&A

  • Q:为什么过不了编译?
  • A:因为有 std::numbers::pi,所以要用 c++20 提交。

  • Q:为什么 $\cot(x) = \frac{1}{\tan x}$?
  • A:按照三角函数,$\cot x = \frac{b}{a}$ , $\tan x = \frac{a}{b}$,即 $\cot$ 和 $\tan$ 互为倒数,所以$\cot(x) = \frac{1}{\tan x}$。
    有问题欢迎评论区留言~