解法一:
void result(int m, int *restAdd, int *restMultip)
{
*restAdd += m / 100 + m / 10 % 10 + m % 10;
*restMultip *= (m / 100) * (m / 10 % 10) * (m % 10);
return;
}
int m=0;
int restAdd;
int restMultip;
for(m=123;m<=329;m++)//第一个的取值范围为 123~333(999/3)
{
restAdd = 0;
restMultip = 1;
result(m,&restAdd,&restMultip);
result(2m, &restAdd, &restMultip);
result(3m, &restAdd, &restMultip);
if (restAdd == 45 && restMultip == 362880)//每个数值都是独立的,45是个个数值相加,362880为相乘
{
printf(“num:%d %d %d\n”,m,m2,m3);
}
}
解法二:
char a[10]= " “;
int i,j;
for(int m =123;m<=329;m++)
{
sprintf(a,”%d",m1000000+2m1000+3m);
for(i=1,j=‘1’;j<=‘9’;memchr(a,j++,9)&&i++)
{
if(i==9)
printf("%d %d %d\n",m,m2,m3);
}
}