一、平方数
题目解析
题目给出一个数,让我们找到离它最近的一个平方数,然后输出即可。
算法思路
这道题总体来说还是非常简单的。
这里先来看一种思路,就是从 1 开始找,找到小于 x 的最大的平方数 l 和大于 x 的最小的平方数 r;然后判断 r-x 和 x-l 中哪一个最小即可。
有的兄弟有的,我们不妨来看看这种思路:
我们知道
sqrt函数可以对一个数进行开根号运算,它会返回一个double类型的数据;那我们对这个返回值强转一下,转成整型不就拿到
l,再对其加一就拿到了r。这样我们这个数是在区间
[l*l , r*r]内的,我们判断r*r - x和x - l*l哪一个最小即可。
代码实现
#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);
(x - l > r - x) cout << r << endl;
cout << l << endl;
;
}


