#include /* * much faster than python version, though less optimized... * * to filter out duplicates and add numbers: * $ ./032 | sort -u | tr "\n" "+" | sed 's/+$/\n/' | bc * */ int is_pandigital(long int a, long int b, long int c) { char digits[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; char digit; int i; while(a > 0) { digit = a % 10; if(digit == 0 || digits[digit]++) return 0; a /= 10; } while(b > 0) { digit = b % 10; if(digit == 0 || digits[digit]++) return 0; b /= 10; } while(c > 0) { digit = c % 10; if(digit == 0 || digits[digit]++) return 0; c /= 10; } for(i=1; i<10; i++) if(digits[i] != 1) return 0; return 1; } int main(void) { long int limit = 10000; long int a, b, c; for(a=2; a limit) break; if(is_pandigital(a, b, c)) printf("%ld\n", c); } } return 0; }