李欣容
(李欣容 吾意随风)
1
题目描述
若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。 例如9=33,16=44(也可以表达成√9=3,√16=4),所以9和16是完全平方数。输入一个正整数n,判断是否为完全平方数。
输入格式
输入一个正整数n。
输出格式
输出“yes”或“no”,表示是否为完全平方数
以下文本如何改正?
#include
#include
#include
#include
using namespace std;
int main(){
int a,b;
cin>>b;
if(sqrt(b)==a){
cout<<"yes";
}
else{
cout<<"no";
}
return 0;
}
3 个赞
张乐凡
(string dp[100005])
11
一个数的平方根取整的平方是这个数,则这个数是平方数。
核心代码:
int(sqrt(a))*int(sqrt(a))==a
4 个赞
蔡万谦
(时光谣)
15
改一下:@ 徐熙喆
if(a*a==b){
cout<<"yes";
}
3 个赞
尹俊灿
(已红温)
16
a没有赋值啊。
可以先把b的平方根存进a,再比较a的平方是否等于b
(应该可以吧,有错勿喷)
1 个赞
向耕立
(向耕立)
19
应该会有误差,比如1.99999999999999…
这种数,会有特殊情况
(除非开根号开不出来1.99999999999999…)
2 个赞
jhxs650
(胡桐语)
21
冷知识:1.999999999999999…=2(不是四舍五入)
2 个赞
向耕立
(向耕立)
24
看上面你的代码
(double)sqrt(n)
假如n开根号得1.9999999999…
那么由于精度问题
的出来会得出2
(int)sqrt(n)一定等于2
那这样
2=2
原本不该成立的等式居然成立了!
1 个赞