题目描述
输出所有aabb式的4位完全平方数。千位百位相同,个位十位相同。
方法
解法一
#include<stdio.h>
#include<math.h>
void main()
{
for (int i = 1; i <= 9; i++)
for (int j = 0; j <= 9; j++)
{
int num = 1100 * i + 11 * j;
int m = floor(sqrt(num) + 0.5);
if (num==m*m)
printf("%d", num);
}
}
该方法的核心是验证一个数是否为平方数,为防止出现浮点数精度导致的问题,该方法运用的floor函数进行四舍五入。
解法二
#include<stdio.h>
void main()
{
for (int x = 1;; x++)
{
int n = x * x;
if (n < 1000) continue;
if (n > 9999) break;
int n1 = n / 100;
int n2 = n % 100;
if ((n1 / 10 == n1 % 10) && (n2 / 10 == n2 % 10)) printf("%d", n);
}
}
该方法的核心是先穷举出四位数的完全平方数,然后进行比对,代码很好的诠释了continue与break的区别。