输出x1到x2之间所有形如aabb的四位完全平方数(即前两位数字相等,后两位数字也相等)。
样例输入
7500 8000
样例输出
7744
提示
完全平方指用一个整数乘以自己例如1*1,2*2,3*3等,依此类推。若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数。
例如样例输出中的7744 是 88 * 88的平方,同时7744是aabb的形式,所以在【7500,8000】之间的7744是aabb的四位完全平方数。
又像7755这样的,不能分解为一个整数的平方的形式,所以不符合题意。
代码如下:
#include<iostream>
#include<stdio.h>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int main()
{
int x1, x2;
cin >> x1 >> x2;
for (int i = x1; i <= x2; i++)
{
int a[4];
int n = i;
for (int j = 0; j<4; j++)
{
//判断i 前两位是否和后两位相同
a[j] = n % 10;
n = n / 10;
}
if (a[0] == a[1]&&a[2] == a[3])
{
//接下来判断 i 开根号是否能为整数(即i的根号是否存在)
float m = sqrt(i);
int s = (int)m;
if (s == m)
cout << i << endl;
}
}
return 0;
}