试题 算法训练 大等于n的最小完全平方数
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输出大等于n的最小的完全平方数。
若一个数能表示成某个自然数的平方的形式,则称这个数为完全平方数
Tips:注意数据范围
输入格式
一个整数n
输出格式
大等于n的最小的完全平方数
样例输入
71711
样例输出
71824
数据规模和约定
n是32位有符号整数
思路分析:
如果这个数n刚好是一个完全平方数,那么n开方后再得到的数取整再平方得到的应该就是n本身;
如果这个数n不是一个完全平方数,那么n开平方后得到的应该是一个小数,将这个小数取整后再加1即可得到我们所要的最小完全平方数;
注意事项:
由于题目中所说的n是一个有符号的数,所以要考虑n为负数的情况;
由于n是一个32位的数,而int型只能表示10位的有符号整数,所以用longlong型。
#include<iostream>
using namespace std;
#include<math.h>
int main()
{
long long n;
cin>>n;
long long a,num;
a=pow(n,0.5);
if(n>=0) //判断n的符号
{
if(n!=pow(a,2))
num=pow(a+1,2);
else
num=n;
}
else
num=0;
cout<<num<<endl;
return 0;
}