形如aabb的4位完全平方数

解法一:

#include<stdio.h>
#include<math.h>
//aabb问题
//解法一:利用数字的特殊形式去构造数字,如果该数的平方根四舍五入后的平方等于原数,说明该数字是完全平方数
int main(void)
{
    for (int i = 1; i < 10; i++)
    {
        for (int j = 0; j < 10; j++)
        {
            int n = 1100 * i + 11 * j;
            //floor返回不超过x的最大整数
            int m = floor(sqrt(n) + 0.5);
            if (m * m == n)//加0.5是为了防止浮点数误差,比如1可能会变成0.9999999999
                printf("%d", n);
        }
    }
    return 0;
}

解法二:

#include<stdio.h>
//解法二:
//从1开始取平方,枚举出所有在取值范围的数,然后判断是否满足aabb
int main(void)
{
    for (int i = 1;; i++)
    {
        int n = i * i;
        if (n < 1000) continue;
        if (n > 9999)break;
        int a = n / 100;
        int b = n % 100;
        if (a % 10 == a / 10 && b % 10 == b / 10)
            printf("%d", n);
    }
    return 0;
}

 

posted @ 2021-01-22 10:05  loliconsk  阅读(715)  评论(0)    收藏  举报