我的想法是把所有三位数每位不一样的都筛选出来,这是第一步。(因为是从小到大筛选,所以保证了顺序)
然后在遍历该筛选后的数组,分别取出其两倍,三倍,分别进行合法性判断,正确就输出,以下是代码,我的
比较繁琐。
程序代码:
然后在遍历该筛选后的数组,分别取出其两倍,三倍,分别进行合法性判断,正确就输出,以下是代码,我的
比较繁琐。
程序代码:
#include <stdio.h>
int a[1000] = {0};
int main() {
//筛选数据
for (int i = 100; i <= 999; i++) {
int b2 = i /100;
int b1= i /10 % 10;
int b0 = i %10;
if (b2 != b1 && b2 != b0 && b1 != b0 && b1 && b2) a[i] = i;
}
for (int i = 100; i <= 999; i++) {
if (a[i] && 3*i <= 999 && a[2*i] && a[3*i]) {
int a2 = a[i]/100,a1 = a[i]/10%10,a0 = a[i] %10;
int b2 = a[i*2]/100,b1 = a[i*2]/10%10,b0 = a[i*2] %10;
int c2 = a[i*3]/100,c1 = a[i*3]/10%10,c0 = a[i*3] %10;
if (a2 != b2 && a2 != b1 && a2 != b0 &&
a2 != c2 && a2 != c1 && a2 != c0 &&
a1 != b2 && a1 != b1 && a1 != b0 &&
a1 != c2 && a2 != c1 && a1 != c0 &&
a0 != b2 && a0 != b1 && a0 != b0 &&
a0 != c2 && a0 != c1 && a0 != c0 &&
b2 != c2 && b2 != c1 && b2 != c0 &&
b1 != c2 && b1 != c1 && b1 != c0 &&
b0 != c2 && b0 != c1 && b0 != c0) {
printf("%d %d %d\n", i, 2*i, 3*i);
}
}
}
return 0;
}

别老是写代码,要多陪妹子,多了解老婆大人,血淋淋的教训。



