题目描述
把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。
输入
无
输出
按从小到大的顺序输出这三个三位数,由空格隔开。输出占一行。
#include<stdio.h>
int zsl(int a,int b,int c);
int main()
{
int a[30];
int i, j, k, t=0;
for(i=10;i<33;i++)
{
if(i*i>100&&i*i<1000)
a[t++]=i*i;
}
for(i=0;i<t;i++)
for(j=i+1;j<t;j++)
for(k=j+1;k<t;k++)
{
if(zsl(a[i], a[j], a[k]))
printf("%d %d %d\n",a[i], a[j],a[k]);
}
}
int zsl(int a,int b,int c)
{
int m[10]={0};
int i;
while(a)
{
m[a%10]=1;
a/=10;
}
while(b)
{
m[b%10]=1;
b/=10;
}
while(c)
{
m[c%10]=1;
c/=10;
}
for(i=1;i<=9;i++)
{
if(m[i]==0)
return 0;
}
return 1;
}