5 有效的完全平方数
作者: Turbo时间限制: 1S章节: 课程设计
问题描述 :
给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。
进阶:不要 使用任何内置的库函数,如 sqrt 。
示例 1:
输入:16
输出:true
示例 2:
输入:14
输出:false
输入说明 :
输入一个整数num.
提示:
1 <= num <= 2^31 - 1
输出说明 :
输出一个布尔值表示结果。
输入范例 :
15
------------------
输出范例:
false
------------------
这道题最好用二分法 其他的方法我都试过 都会超时
#include<iostream>
using namespace std;
void divided_double(int n)
{
int left = 1;
int right = n;
while (left <= right)
{
int mid = (left + right) / 2;
int temp = n / mid;
if (temp == mid)
{
if (n % mid == 0)
{
cout << "true";
return;
}
else
left = mid + 1;
}
else if (temp > mid)
{
left = mid + 1;
}
else if (temp < mid)
{
right = mid - 1;
}
}
cout << "false";
return;
}
int main()
{
int n = 0;
cin >> n;
divided_double(n);
return 0;
}