题目截图
暴力解法
#include <iostream>
using namespace std;
int Check(long long num, long long sum)
{
int x_num[6] ={0};
int x_sum[12] = {0};
int i = 0;
int sizes = 0; //定义平方数长度
while(num > 0) //循环分离需测试的各位数字
{
x_num[i] = num%10;
num /= 10;
i++;
}
while(sum > 0) //循环分离平方数的各位数字
{
x_sum[sizes] = sum%10;
sum /= 10;
sizes++; //长度加一
}
for(i = 0; i < 6; i++)
{
for(int j = 0; j < sizes; j++)
{
if(x_num[i] == x_sum[j])
{
return 0; //找到相同数字返回假
}
}
}
return 1; //否则为真
}
int main()
{
long long num, sum;
for(int i = 1; i < 10; i++) //枚举测试数据
{
for(int j = 0; j < 10; j++)
{
if(i != j)
for(int k = 0; k < 10; k++)
{
if(i != k && j != k)
for(int l = 0; l < 10; l++)
{
if(i != l && j != l && k != l)
for(int m = 0; m < 10; m++)
{
if(i != m && j != m && k != m && l != m)
for(int n = 0; n < 10; n++)
{
if(i != n && j != n && k != n && l != n && m != n && n != 5 && n != 6)
{
num = i*100000+j*10000+k*1000+l*100+m*10+n;
sum = num * num;
if(Check(num, sum))
printf("%lld ", num);
}
}
}
}
}
}
}
return 0;
}