题解 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 帮你注意到这一点。