题目:
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int abc,def,ghi;
int a[10],i,count;
memset(a,0,sizeof(a));
for(abc = 123 ;abc <=329;abc++)
{
memset(a,0,sizeof(a));
count = 0;
def = abc*2;
ghi = abc*3;
a[abc/100] = a[abc/10%10] = a[abc % 10] = 1;
a[def/100] = a[def/10%10] = a[def % 10] = 1;
a[ghi/100] = a[ghi/10%10] = a[ghi % 10] = 1;
for(i=1;i<10;i++)
{
count += a[i];
}
if(count == 9)
{
printf("%d %d %d\n",abc,def,ghi);
}
}
return 0;
}
解析:
1、将所有可能出现的数字作为一个一维数组的下标,最后判断之和是否为9,如果小于9,必有重合,反之每个数字只有一个。
2、数组和count要清零。