#include <stdio.h>
//习题2-6
//有点好玩,先要人脑预处理
//思路:
// 1.ghi最大值是987,987/3=329,确定abc的最大值。
// 2.先按abc, abc*2, abc*3去凑数。(有bug,倍数时会出现数字0,在checking函数中要额外去掉)
// 3.2中凑出来的数交给一个checking函数去判断这3个数有无重复数字
// 4.checking函数把3个数字拆了,丢到数字里,然后遍历这个数组检查重复值
bool checking(int abc, int def, int ghi)
{
int a, b, c, d, e, f, g, h, i;
a = abc / 100, b = abc / 10 % 10, c = abc % 10;
d = def / 100, e = def / 10 % 10, f = def % 10;
g = ghi / 100, h = ghi / 10 % 10, i = ghi % 10;
int arr[] = { a, b, c, d, e, f, g, h, i };
for (int i = 0; i < 9; i++)
{
if(arr[i] == 0) return 0;
for (int j = i + 1; j < 8; j++)
if (arr[i] == arr[j]) return 0;
}
return 1;
}
int main()
{
int abc, def, ghi;
for (int i = 123; i <= 329; i++)
{
abc = i;
def = abc * 2;
ghi = abc * 3;
if (checking(abc, def, ghi))
printf("%d %d %d\n", abc, def, ghi);
}
return 0;
}