求3个三位数i、j、k,j=2*i,k=3*i,而且i、j、k中1-9每个数字出现一次
#include <cstdio>
int main(){
int j,k;
int num[10]={0};
for (int i=123;i*3<=987;i++)//i,j,k分别为三个三位数,其中j,k分别是i的2倍、3倍
{
//记录数组置0初始化;这里非常关键!!!
for (int b=0;b<10;b++)
num[b]=0;
//取i的各个位数字,放入数组记录次数
num[i/100]++;
num[i/10%10]++;
num[i%10]++;
//取j的各个位数字,放入数组记录次数
j = i*2;
num[j/100]++;
num[j/10%10]++;
num[j%10]++;
//取k的各个位数字,放入数组记录次数
k = i*3;
num[k/100]++;
num[k/10%10]++;
num[k%10]++;
/*遍历记录数组,1-9数码的次数都为1则符合要求,否则结束开始下一次循环。注意数码0 (num[0])不用统计*/
for (int a=1;a<10;a++)
{
//次数不为1,不符题意,跳过
if (num[a]!=1)
break;
if (a==9)//1-9皆为1,输出这三个三位数
printf("%d %d %d\n",i,j,k);
}
}
return 0;
}