aabb问题:输出所有形如aabb的4位完全平方数(即前两位数字相等,后两位数字也相等)
#include<stdio.h>
#include<math.h>
void Fa1()
{
int i=1;
int j=0;
for(i=1;i<9;i++)
{
for(j=0;j<9;j++)
{
int a=1100*i+11*j;
int b=floor(sqrt(a)+0.5); //函数floor(x)返回不超过x的最大整数
if(b*b==a)
printf("%d\n",a);
}
}
}
void Fa2()
{
int m=0;
int n=0;
int p=0;
int q=0;
int sum=0;
int i=1;
int j=0;
int k=0;
for(i=1;i<=9;i++)
{
for(j=0;j<=9;j++)
{
m=j*10;
n=j;
p=1000*i;
q=100*i;
sum=p+q+m+n;
k=sqrt(sum);
if(k*k==sum)
printf("%d\n",sum);
}
}
}
void Fa3()
{
int x=1;
for(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)
printf("%d\n",n);
}
}
int main()
{
Fa1();
Fa2();
Fa3();
}
在进行此类运算的时候呢,方法一和方法二在浮点运算是可能回存在误差,因此在进行浮点数比较时,应考虑到浮点误差。
方法三的思路是枚举平方根x,从而避免开平方操作。