#include <stdio.h>
bool invert_digit(int *n)
{
switch (*n)
{
case 0:
case 1:
case 2:
case 5:
case 8:
break;
case 6:
*n = 9;
break;
case 9:
*n = 6;
break;
default:
return false;
}
return true;
}
bool invert(int n, int *r)
{
int a[4], i;
*r = 0;
a[0] = n / 1000;
a[1] = n % 1000 / 100;
a[2] = n % 100 / 10;
a[3] = n % 10;
if (a[3] == 0)
return false;
for (i = 3; i >= 0; i--)
{
if (!invert_digit(a + i))
return false;
*r = *r * 10 + a[i];
}
return true;
}
int main(void)
{
int a, b;
int c, d;
int e, f;
for (a = 1000; a <= 9999; a++)
{
if (!invert(a, &c))
continue;
for (b = 1000; b <= 9999; b++)
{
if (!invert(b, &d))
continue;
e = c - a;
f = b - d;
if (e + f == 558)
{
if ((e >= 800 && e < 900 && f > -300 && f <= -200) || (f >= 800 && f < 900 && e > -300 && e <= -200))
{
printf("%d => %d (%d), %d => %d (%d): %d\n", a, c, e, b, d, f, e + f);
}
}
}
}
return 0;
}