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

Posted giantran

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)相关的知识,希望对你有一定的参考价值。

计算完全平方根可以使用math库中的sqrt完成,但需要注意以下几点:a取值应为1-9,b取值为0-9;完全平方得到的结果是浮点型,
因为浮点型不像整形可能有误差的存在(TODO:浮点型计算误差),可以使用floor(sqrt(x)+0.5)来减小误差,这里稍微展开说下:如果sqrt(x)的结果本来是1,由于浮点计算的误差导致结果
为0.9999,那么cast到int型其结果就是0,因此用四舍五入的方式来减少这种误差(这涉及到浮点型的精度问题,如果精度较高的浮点表示,
那计算结果于预期的波动会相对较小,否则就可能存在较大偏差,当然现代编程语言的精度是可以适用这种方式的)

for (int a = 1; a<=9; a++) 
    for (int b = 0; b<=9; b++) 
        int n = 1100 * a + 11 * b;
        int m = floor(sqrt(a) + 0.5);
        if (m * m == n) printf("%d ", n);
    

要去考虑误差略嫌麻烦,可以使用枚举的方式并根据aabb的特性去考虑它的千位百位以及十位个位是否分别相等

for (int i=31; ; i++)   // 31^2为最大的小于1000的平方整数
    int n = i * i;
    if (n > 9999) break;
    
    int a = n / 100;
    int b = n % 100;
    if (a/10 == a%10 && b/10 == b%10) printf("%d", n);

 摘录自<<算法竞赛入门经典>>

以上是关于输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)的主要内容,如果未能解决你的问题,请参考以下文章

aabb问题

aabb问题(输出所有的形如aabb的四位完全平方数)

判断AABB的平方根

C语言 7744问题

第二章 循环结构程序设计

C语言基础