1 条题解

  • 0
    @ 2025-10-30 16:08:26

    思路分析

    1. 任务拆解:

    • 找到所有四位数的平方数
    • 检查每个平方数是否满足目击者描述的特征:
      • 前两位数字相同(千位=百位)
      • 后两位数字相同(个位=十位)
      • 前两位与后两位不同(千位≠个位)

    2. 关键点分析:

    • 四位数的平方根范围:32到99(32²=1024,99²=9801)
    • 从最小的四位数平方根开始遍历
    • 分离四位数的各个数位
    • 检查三个条件必须同时满足

    3. 步骤规划:

    • 从sqrt(1000)≈32开始遍历整数n
    • 计算num = n²
    • 分离num的个位、十位、百位、千位
    • 检查三个条件:千位=百位 且 个位=十位 且 千位≠个位
    • 找到第一个满足条件的数就输出

    4. 代码对应:

    • int n=sqrt(1000); → 从四位平方数的最小平方根开始
    • while(true) → 循环查找
    • num=n*n; → 计算平方数
    • g=num%10; → 获取个位数字
    • s=num/10%10; → 获取十位数字
    • b=num/100%10; → 获取百位数字
    • q=num/1000; → 获取千位数字
    • if(g==s&&b==q&&q!=g) → 检查三个条件
    • cout<<num; break; → 输出结果并结束
    • 1

    信息

    ID
    1327
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    (无)
    递交数
    73
    已通过
    38
    上传者