问题描述:
把1、2、3、4、5、6、7、8、9组合成3个3位数,要求每个数字仅使用一次,使每个3位数均为完全平方数。按从小到大的顺序输出这三个三位数。
输入:
无
输出:
按从小到大的顺序输出这三个三位数,由空格隔开。输出占一行。
样例输入:
无
样例输出:
按从小到大的顺序输出这三个三位数,由空格隔开。输出占一行。
参考代码:
#include<stdio.h>
#include<math.h>
int fanc(int a,int b,int c)
{
int x,num[10]={0};
while(a)
{
x=a%10;
num[x]++;
a/=10;
}
while(b)
{
x=b%10;
num[x]++;
b/=10;
}
while(c)
{
x=c%10;
num[x]++;
c/=10;
}
for(int i=1;i<10;i++)
if(num[i]!=1)
return 0;
return 1;
}
int main()
{
int a[20],n,x,t=0;
for(int i=1;i<=9;i++)
for(int j=1;j<=9;j++)
for(int k=1;k<=9;k++)
{
if(i==j||j==k||k==j)//如果三个数相同则跳过本次循环
continue;
n=i*100+j*10+k;
x=sqrt(n);
if(n==x*x)
a[t++]=n;
}
for(int i=0;i<t;i++)
for(int j=i+1;j<t;j++)
for(int k=j+1;k<t;k++)
{
if(fanc(a[i],a[j],a[k]))
printf("%d %d %d\n",a[i],a[j],a[k]);
}
return 0;
}