穷举法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | #include <stdio.h> int is_diff_digits(int n, int len) { int a[9]; int i, j; for(i=0; i<len; i++) a[i] = 0; for(i=0; i<len; i++) { a[i] = n % 10; n = n / 10; } for (i=0; i<len; i++) for(j=i+1; j<len; j++) if (a[i]==a[j]) return 0; return 1; } int main(int argc, char *argv[]) { int i, n, m; scanf("%d", &n); for (i=0; i<=99999; i++) { if (is_diff_digits(i, 5)) { m = n * i; if ((m<=99999) && is_diff_digits(m*10000+i,10)) { if (i<10000) printf("%d/0%4d=%dn",m,i,n); else printf("%d/%5d=%dn",m,i,n); } } } return 0; } |