一、平方数
题目解析
题目给出一个数,找到离它最近的一个平方数并输出。
算法思路
一种思路是从 1 开始找,找到小于 x 的最大平方数 l 和大于 x 的最小平方数 r,比较差值。更简便的方法是利用 sqrt 函数:
我们知道
sqrt函数可以对一个数进行开根号运算,返回 double 类型数据;将该返回值强转为整型即拿到 l,再对其加一即拿到 r。
这样该数在区间 [ll, rr] 内,判断 rr - x 和 x - ll 哪个最小即可。
代码实现
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long x;
cin >> x;
long long a = sqrt(x);
long long l = a * a, r = (a + 1) * (a + 1);
if (x - l > r - x) cout << r << endl;
else cout << l << endl;
return 0;
}


