Pekné riešenie.
Doplním podmienku, že cifry sa nemôžu opakovať:
#include <stdio.h>
int main() {
for (int i = 100000; i < 1000000; ++i) {
int x = 8 * i;
if (i/100%10 == x%10 && i/100%10 == x/1000%10 && i/100000%10 == x/100%10 && i/10000%10 == x/100000%10) {
int bitmask = 1<<i/100000%10|1<<i/10000%10|1<<i/1000%10|1<<i/100%10|1<<i/10%10|1<<i/1%10|1<<x/1000000%10|1<<x/10000%10|1<<x/10%10;
int missing = 0;
for (int j = 0; j < 10; ++j)
if ((bitmask&(1<<j)) == 0 && ++missing > 1)
break;
if (missing == 1)
printf("DOTAZY=%06d, PORADNA=%07d\n", i, x);
}
}
return 0;
}
Edit: Vypíše to:
DOTAZY=509816, PORADNA=4078528
DOTAZY=509821, PORADNA=4078568