问题标题: 酷町堂:4001

0
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
我要回答