#include <stdio.h>
#include <stdlib.h>
int main()
{
int a[10], b[10], c[10], n1[999], n2[999], n3[999], s[10], i, j, k, f, t, r; //創建三個數組,用來存放1-9
t = 1;
for (i=1; i<=10; i++) //為三個數組賦值1-9
{
a[i] = i;
b[i] = i;
c[i] = i;
}
//### 列出符合“在1-9選三個數組成各位都不同”的第一個三位數 ###
for (i=1; i<4; i++) //第一層循環控制第一位數(百位),並且剔除掉超過400的數
{
for (j=1; j<10; j++) //二層循環控制第二位(十位)
{
if (j!=i) //保證第二位中不含第一位的數字(剔除十位中的百位數字)
{
for (k=1; k<10; k++) //三層循環控制第一位(個位)
{
if (k!=i && k!=j) //保證不含第一、二位中的數(剔除個位中百、十位中數字)
{
n1[t] = a[i]*100 + b[j]*10 +c[k]; //將三位不同數字組合成第一個三位數
n2[t] = n1[t] * 2; //第二個三位數
n3[t] = n1[t] * 3; //第三個三位數
t++; //確定符合條件的第一個三位數的個數,用於下面控制循環
}
}
}
}
}
//### 循環判斷三個三位數所含數字在1-9中且各不相同 ##
for (f=1; f<t; f++) //一層循環,循環遍歷上面求出的在數組n*[]中的元素
{
if (n1[f]>191 && n1[f]<334) //確定所求第一位三位數在191-334之間,其余不符合條件
{ //把三個三位數中全部9個數存放在數組s[]中
s[0] = n1[f] / 100;
s[1] = (n1[f] % 100) / 10;
s[2] = n1[f] % 10;
s[3] = n2[f] / 100;
s[4] = (n2[f] % 100) / 10;
s[5] = n2[f] % 10;
s[6] = n3[f] / 100;
s[7] = (n3[f] % 100) / 10;
s[8] = n3[f] % 10;
r = 0; //r賦值0(清零)
for (i=0; i<8; i++) //確保三個三位數中不含相同數字且不含數字0
{
for (j=i+1; j<9; j++)
{
if (s[i]==s[j] || s[i]==0 || s[j]==0) //如果有相同數字或有數字0則令r=1並跳轉
{
r = 1;
goto A;
}
}
}
A:
if (r == 0) //如果各位數字均不同並且不含有數字0,則輸出
{
printf("%d %d %d\n", n1[f], n2[f], n3[f]);
}
}
}
}