输出所有形如aabb的4位完全平方数(前俩位数字相等,后两位数字相等).
方案一:
#include<iostream>
#include<cmath>
using namespace std;
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) cout<<n;
}
return 0;
}
sqrt(n)+0.5是防止由于误差的影响,整数1变成了0.9999999999,floor的结果会是0而不是1.
方案二:
枚举平方根x,从而避免开平方操作。
#include<iostream>
using namespace std;
int main()
{
for(int 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) cout<<n;
}
return 0;
}