#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,c,d,e,f,g,h,i,n;
int sum=0;
for(a=1; a<=3; a++){
for(b=1; b<=9; b++){
for(c=1; c<=9; c++){
n = a*100 + b*10 + c;
if(n>=123 && n<333){
d = 2*n/100;
e = 2*n/10%10;
f = 2*n%10;
g = 3*n/100;
h = 3*n/10%10;
i = 3*n%10;
int A[10]={0};
A[a]=1;A[b]=1;A[c]=1;A[d]=1;A[e]=1;A[f]=1;A[g]=1;A[h]=1;A[i]=1;
for(i=1; i<10; i++)
sum += A[i];
if(sum == 9)
printf("%d%d%d %d%d%d %d%d%d\n",a,b,c,d,e,f,g,h,i);
}
}
}
}
return 0;
}
#include <stdio.h>
#include <stdlib.h>
int check(int *a, int aSize) { // (1) 检测数组中是否有重复元素;
int i;
int hash[10] = {};
for(i = 0; i < aSize; ++i) {
if(a[i] == 0) {
return 0;
}
if(hash[ a[i] ]) {
return 0;
}
hash[ a[i] ] = 1;
}
return 1;
}
int main() {
int a, b, c;
int n, n2, n3;
int num[10];
for(a=1; a<=3; a++){
for(b=1; b<=9; b++){
for(c=1; c<=9; c++){ // (2) 枚举三个数字;
n = a*100 + b*10 + c;
n2 = n*2;
n3 = n*3;
if(n3 > 999) break; // (3) 如果最大的数超过三位数,gg;
num[0] = a; // (4) 将涉及到的9个数字填充到数组中;
num[1] = b;
num[2] = c;
num[3] = n2/100;
num[4] = n2/10%10;
num[5] = n2%10;
num[6] = n3/100;
num[7] = n3/10%10;
num[8] = n3%10;
if( check(num, 9) ) { // (5) 检测均不重复后输出;
printf("%d %d %d\n", n, n2, n3);
}
}
}
}
return 0;
}
输出如下:
192 384 576
219 438 657
273 546 819
327 654 981