问题标题: 酷町堂:4001 完全平方数

0
0
已解决
黄品翔
黄品翔
初级光能
初级光能

题目描述 Description

使用一个函数来判断这个数是否是完全平方数,即这个数能否被两个一样的数字相乘得到,如果是,则输出Yes,否则输出No。

输入描述 Input Description

输入一个数字n

输出描述 Output Description

输出Yes 或者 No

样例输入 Sample Input


 

9

样例输出 Sample Output


 

Yes

数据范围及提示 Data Size & Hint

1<=n<=1000

难道不是用 sqrt 就行了吗?

为什么是:

错误代码:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,n=0;
    cin>>a;
    n=sqrt(a);
    if(n==0)
    {
        cout<<"No";
    }
    else cout<<"Yes";
    return 0;
}

请各位大佬帮忙找错,谢谢!!!

黄品翔在2019-04-01 18:45:30追加了内容

80分代码:

#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()
{
    int n;
    cin>>n;
    if(pd(n))
    {
        cout<<"Yes";
    }
    else cout<<"No";
    return 0;
}

@朱智霖 


0
已采纳
李泽远
李泽远
高级天翼
高级天翼

pd中的代码改成:
    for(int i=1;i<=sqrt(n);i++)
        if(i*i==n)
            return true;
    return false;

Plus:我知道已经晚了,此问题发布已经10个多月了(手动滑稽)。

0
0
张宸瑞
张宸瑞
中级守护
中级守护

把n=sqrt(a);去掉,判断语句改为sqrt(a)*sqrt(a)!=a,其他别变

望采纳!

0
0
李素妍
李素妍
新手天翼
新手天翼
#include<iostream>
#include<cstdio>
using namespace std;
int n,a;
void  f();
int main()
{
        cin>>n;
            f();
        return 0;
}
void f(){
        for(int i=1;i<=n;i++){
            if(n==i*i){
                cout<<"Yes";
                return ;
            }
    }
              cout<<"No";
}
0
我要回答