#include<stdio.h>
#include<cstring>
using namespace std;
int m[7];
int v[11]={0};
bool book[11];
bool is(long long int num)
{
do{
if(book[num%10])//如果有,则说明乘积后的单个数包浛了原来数,返回0
return false;
num=num/10;
}while(num);
return true;
}
void check()
{
long long int sum;
sum=(m[0]*100000+m[1]*10000+m[2]*1000+m[3]*100+m[4]*10+m[5])*(m[0]*100000+m[1]*10000+m[2]*1000+m[3]*100+m[4]*10+m[5]);
memset(book,false,sizeof(book));
for(int i=0;i<=5;i++)//原来数字放到他位置去置为1 m[i]= 1 book[1]=1
{
book[ m[i] ]=true;
}
if(is(sum))
{ printf("数字为:" );
for(int i=0;i<=5;i++)
{
printf("%d",m[i]);
}
printf("\n");
}
}
void dfs(int n)
{
if(n==6)
{
check();
return ;
}
for(int i=0;i<=9;i++)
{
if(v[i]==0)
{
v[i]=1;
m[n]=i;
dfs(n+1);
v[i]=0;
}
}
}
main()
{
dfs(0);
return 0;
}
#include<cstring>
using namespace std;
int m[7];
int v[11]={0};
bool book[11];
bool is(long long int num)
{
do{
if(book[num%10])//如果有,则说明乘积后的单个数包浛了原来数,返回0
return false;
num=num/10;
}while(num);
return true;
}
void check()
{
long long int sum;
sum=(m[0]*100000+m[1]*10000+m[2]*1000+m[3]*100+m[4]*10+m[5])*(m[0]*100000+m[1]*10000+m[2]*1000+m[3]*100+m[4]*10+m[5]);
memset(book,false,sizeof(book));
for(int i=0;i<=5;i++)//原来数字放到他位置去置为1 m[i]= 1 book[1]=1
{
book[ m[i] ]=true;
}
if(is(sum))
{ printf("数字为:" );
for(int i=0;i<=5;i++)
{
printf("%d",m[i]);
}
printf("\n");
}
}
void dfs(int n)
{
if(n==6)
{
check();
return ;
}
for(int i=0;i<=9;i++)
{
if(v[i]==0)
{
v[i]=1;
m[n]=i;
dfs(n+1);
v[i]=0;
}
}
}
main()
{
dfs(0);
return 0;
}