1 条题解

  • 0
    @ 2025-8-24 21:15:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Maxmilite
    **

    搬运于2025-08-24 21:15:49,当前版本为作者最后更新于2023-12-09 00:40:57,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    Source & Knowledge

    2023 年 12 月语言月赛,由洛谷网校入门计划/基础计划提供。

    题目大意

    给定一个非负整数 aa,找到最小的非负整数 xx,使得 10xa\left \lfloor 10 \sqrt x \right \rfloor \geq a

    题目分析

    本题考察对顺序结构的运用。

    根据题目,可以得知 (x)2=x×x=x(\sqrt x) ^ 2 = \sqrt x \times \sqrt x = x

    我们对 10xa\left \lfloor 10 \sqrt x \right \rfloor \geq a 这个式子做一点变形。

    $$\begin{aligned} & \left \lfloor 10 \sqrt x \right \rfloor \geq a \\ \Rightarrow & \left( \lfloor 10 \sqrt x \rfloor \right ) ^ 2\geq a ^ 2 = a \times a \\ \Rightarrow & (10 \times 10) \times \sqrt x \times \sqrt x \geq a ^ 2\\ \Rightarrow & 100 \times x \geq a ^ 2\\ \Rightarrow & 100 \times x \div 100 \geq a ^ 2 \div 100\\ \Rightarrow & x \geq a ^ 2 \div 100\\ \end{aligned} $$

    由于 a×a÷100a \times a \div 100 可能是小数,因此我们需要让 xx 取这个值上取整后的值。

    C++ 的 cmath 库中有函数 ceil(x),代表对 x 上取整后的结果。

    同时,在 C++ 中,当 aa 是整数时,a * a / 100 中的除法为整数除法,结果默认为下取整,因此需要将 a 转换为 double 小数后再做运算。

    核心代码如下:

    int a;
    cin >> a;
    int ans = ceil((double) a * a / 100);
    cout << ans << endl;
    

    视频讲解

    • 1

    信息

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