题解 P10314【[SHUPC 2024] 函数】

· · 题解

注意到:

f(x)=\lfloor x\rfloor,\qquad(x\notin\N)

代码:

int T; double x;
cout << fixed << setprecision(12);
for(cin >> T; T; --T) {
    cin >> x;
    cout << floor(x) << endl;
}

感觉说明不够过不了审,于是简单说一下正确性:

由诱导公式 \cot\pi x=\tan(\frac{\pi}{2}-\pi x)f(x)=x-0.5+\frac{\arctan(\tan(\frac{\pi}{2}-\pi x))}{\pi},考察 \frac{\arctan(\tan(\frac{\pi}{2}-\pi x))}{\pi} 的意义,发现是将 y=\frac{\frac{\pi}{2}-\pi x}{\pi}=\frac{1}{2}-x 切成长度为 1 的段并上下平移,平移的量恰好跟 -0.5 加起来就是 -\{x\}\{x\} 表示 x 的小数部分),因此 f(x)=\lfloor x\rfloor

如果你不会三角函数,你也可以让 wolframalpha 或者 geogebra 帮你注意到这一点。