题解 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 x=\tan(\frac{\pi}{2}-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 帮你注意到这一点。

posted @ 2024-04-11 19:46  rui_er  阅读(32)  评论(0编辑  收藏  举报