题目:输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)。
方法一:用数学函数,开平方根求解。不再赘述。
#include<stdio.h>
#include<math.h>
//aabb问题
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) printf("%d\n", n);
}
}
return 0;
}
方法二:枚举平方根
该方法能够避开开平方根。
思路是分别比较四位数的前两位,后两位是否相等。if语句中的内容,就是比较过程。
int in=n/100,算出前两位;int be=n%(取余)100,算出后两位。全部符合要求,即可输出7744.
#include<stdio.h>
int main()
{
for(int x = 1; ; x++)
{ int n = x * x;
if(n < 1000)
continue;
if(n > 9999)
break;
int in = n / 100;
int be= n % 100;
if(in/10 == in%10 && be/10 == be%10)
printf("%d\n", n);
}
return 0;
}