using namespace std;
int fun(int a);//判斷壹個整數裏面是否各位數互不相等且不含0
int fun1(int a,int b);//判斷是否a和b兩整數裏面的各個位數互不相等
int fun2(int a,int b);//判斷整數a裏面是否含有b(b在2~9)
void main()
{
int a,b;
for(a=1111;a<9999;a++)
{
for(b=2;b<=9;b++)
if(((a*b)<9999)&&fun(a)&&fun(a*b)&&fun1(a,a*b)&&fun2(a,b)&&fun2(a*b,b))
cout<<a<<"*"<<b<<"="<<a*b<<endl;
}
}
int fun(int a)
{
int m[100];
int i=0;
while(a)
{
m[i]=a%10;
if(a%10==0)
return 0;
a=a/10;
i++;
};
for(int j=0;j<i;j++)
for(int t=j+1;t<i;t++)
if(m[j]==m[t])
return 0;
return 1;
}
int fun1(int a,int b)
{
int ma[100],mb[100];
int i=0,j=0;
while(a)
{
ma[i]=a%10;
if(a%10==0)
return 0;
a=a/10;
i++;
};
while(b)
{
mb[j]=b%10;
if(b%10==0)
return 0;
b=b/10;
j++;
};
for(int t=0;t<i;t++)
for(int s=0;s<j;s++)
if(ma[t]==mb[s])
return 0;
return 1;
}
int fun2(int a,int b)
{
int m[100];
int i=0;
while(a)
{
m[i]=a%10;
if(a%10==0)
return 0;
a=a/10;
i++;
};
for(int j=0;j<i;j++)
if(m[j]==b)
return 0;
return 1;
}
運行結果:
1738*4=6952
1963*4=7852
Press any key to continue