完全平方数问题

输出所有形如aabb的4位完全平方数(前俩位数字相等,后两位数字相等).

方案一:

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
    for(int a=1;a<=9;a++)
        for(int b=0;b<=9;b++)
        {
            int n=a*1100+b*11;
            int m=floor(sqrt(n)+0.5);
            if(m*m==n) cout<<n;
        }

    return 0;
}

sqrt(n)+0.5是防止由于误差的影响,整数1变成了0.9999999999,floor的结果会是0而不是1.

方案二:

枚举平方根x,从而避免开平方操作。

#include<iostream>
using namespace std;
int main()
{
    for(int x=1;;x++)
    {
        int n=x*x;
        if(n<1000) continue;
        if(n>9999) break;
        int hi=n/100;
        int lo=n%100;
        if(hi/10==hi%10&&lo/10==lo%10) cout<<n;
    }

    return 0;
}







阅读更多 登录后自动展开
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页