我的想法是把所有三位数每位不一样的都筛选出来,这是第一步。(因为是从小到大筛选,所以保证了顺序)
然后在遍历该筛选后的数组,分别取出其两倍,三倍,分别进行合法性判断,正确就输出,以下是代码,我的
比较繁琐。
然后在遍历该筛选后的数组,分别取出其两倍,三倍,分别进行合法性判断,正确就输出,以下是代码,我的
比较繁琐。
程序代码:
#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; }
别老是写代码,要多陪妹子,多了解老婆大人,血淋淋的教训。