Pagini recente » Cod sursa (job #2303379) | Statistici Daniel Iova (TheVigilante39) | Cod sursa (job #433047) | Cod sursa (job #2816123) | Cod sursa (job #484126)
Cod sursa(job #484126)
#include <stdio.h>
int n;
int v[10002];
char s[10002];
int ok ()
{
int st = 1, dr = n, i, d;
while (1)
{
d = v[st] - v[dr];
if (d != 0 && d != 1 && d != 10 && d != 11)
return 0;
if (st == dr)
return v[st] % 2 == 0;
if (st == dr - 1)
return (v[st] == v[dr]) || (v[st] == v[dr] + 11);
if (d == 1 || d == 11)
v[st + 1] += 10;
if (d >= 10 && v[dr] == 9)
return 0;
if (d >= 10)
{
for (i = dr - 1; v[i] == 0; i --)
v[i] = 9;
v[i] --;
if (i == st)
return 0;
}
st ++, dr --;
}
}
int rez ()
{
int i;
if (n == 1)
return s[1] % 2 == 0;
for (i = 1; i <= n; i ++)
v[i] = s[i];
if (v[1] != 1 || v[n])
if (ok ())
return 1;
if (v[1] != 1)
return 0;
for (i = 2; i <= n; i ++)
v[i - 1] = s[i];
v[1] += 10;
n --;
return ok ();
}
int main ()
{
freopen ("invers.in", "r", stdin);
freopen ("invers.out", "w", stdout);
int t;
scanf ("%d\n", &t);
while (t --)
{
gets (s + 1);
for (n = 1; s[n]; n ++)
s[n] -= '0';
n --;
if (rez ())
printf ("DA\n");
else
printf ("NU\n");
}
return 0;
}