最近平方数

639 词

题目描述

如果一个整数可以写成另一个整数的平方,则说它是一个完全平方数。比如$1,4,9,16$是完全平方数。输入一个整数,找到一个离它最近的完全平方数。

输入

仅有一组测式数据,输入一个整数$N$($0≤N≤100000$)。

输出

输出离它最近的完全平方数,如果$N$就是完全平方数,则输出$N$。

样例输入

1
6

样例输出

1
4

题解

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<iostream>
using namespace std;
int main() {
int n, a = 1, b, c, nn;
cin >> n;
b = n;
c = n;
while (a * a != b) {
while (a * a < b) {a++;}
if (a * a != b) {a = 1;b--;}
}
while (a * a != c) {
while (a * a < c) {a++;}
if (a * a != c) {a = 1;c++;}
}
if ((c - n) > (n - b)) { cout << b; }
else { cout << c; }
return 0;
}

Python

1
2
3
4
5
import math

m = int(math.sqrt(int(input())))
x, y = m ** 2, (m + 1) ** 2
print(x if m - x < y - m else y)