0
已解决
傅文彬
新手天翼
新手天翼
4001 完全平方数
题目描述 Description
使用一个函数来判断这个数是否是完全平方数,即这个数能否被两个一样的数字相乘得到,如果是,则输出Yes,否则输出No。
输入描述 Input Description
输入一个数字n
输出描述 Output Description
输出Yes 或者 No
样例输入 Sample Input
9
样例输出 Sample Output
Yes
数据范围及提示 Data Size & Hint
1<=n<=1000
80 WA
#
include<bits/stdc++.h> using namespace std; bool pd(int n) { for(int i=1;i<=n;i++) { if (n/i==i) return true; } return false; } int main() { long long n; cin>>n; if(pd(n)) { cout<<"Yes"; } else cout<<"No"; return 0; }
傅文彬在2019-05-07 21:47:55追加了内容
打错了,是
#include<bits/stdc++.h>
using namespace std;
bool pd(int n)
{
for(int i=1;i<=n;i++)
{
if (n/i==i)
return true;
}
return false;
}
int main()
{
long long n;
cin>>n;
if(pd(n))
{
cout<<"Yes";
}
else cout<<"No";
return 0;
}
0
已采纳
丁浩然
新手光能
新手光能
你的错误在于 : 一个数除以另一个数(为int类型),若不能整除则取整数部分
你的程序正是这一点出错了
if (n/i==i)
return true;
若n=10,i=3;
10/3的整数部分为三,取三,满足你所设的条件,而十本身并不是完全平方数。。。。。。
所以你可以换一种写法:
if (i*i==n)
这样就可以保证上述情况不出现!
Accepted:100分
丁浩然的测评结果:
测试点#1
测评结果 : Accepted
时间 : 0ms
测试点#2
测评结果 : Accepted
时间 : 0ms
测试点#3
测评结果 : Accepted
时间 : 0ms
测试点#4
测评结果 : Accepted
时间 : 0ms
测试点#5
测评结果 : Accepted
时间 : 0ms
测试点#6
测评结果 : Accepted
时间 : 0ms
测试点#7
测评结果 : Accepted
时间 : 0ms
测试点#8
测评结果 : Accepted
时间 : 0ms
测试点#9
测评结果 : Accepted
时间 : 0ms
测试点#10
测评结果 : Accepted
时间 : 0ms
0
0