1 条题解

  • 0
    @ 2025-8-24 22:56:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar rui_er
    九万里风鹏正举

    搬运于2025-08-24 22:56:50,当前版本为作者最后更新于2024-04-11 19:40:15,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    注意到:

    f(x)=x,(xN)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(π2πx)\cot\pi x=\tan(\frac{\pi}{2}-\pi x) 知 $f(x)=x-0.5+\frac{\arctan(\tan(\frac{\pi}{2}-\pi x))}{\pi}$,考察 arctan(tan(π2πx))π\frac{\arctan(\tan(\frac{\pi}{2}-\pi x))}{\pi} 的意义,发现是将 y=π2πxπ=12xy=\frac{\frac{\pi}{2}-\pi x}{\pi}=\frac{1}{2}-x 切成长度为 11 的段并上下平移,平移的量恰好跟 0.5-0.5 加起来就是 {x}-\{x\}{x}\{x\} 表示 xx 的小数部分),因此 f(x)=xf(x)=\lfloor x\rfloor

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

    • 1

    信息

    ID
    10011
    时间
    1000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者