题目
求出一个正整数 ,满足
可以表示成
(
是正整数),使得
的值最小。
解题思路
使用 sqrt()
函数将 y 开平方,得到一个整数 a
,则有 。距离 y 最近的完全平方数在
和
其中的一个。
C++代码
#include<iostream> #include<cmath> using namespace std; int main(){ long long x; cin >> x; long long a = sqrt(x); long long y = a*a; long long y2 = (a+1)*(a+1); long long d = x - y; long long d2 = y2 - x; if(d < d2) cout << y << endl; else cout << y2 << endl; return 0; }