Pagini recente » Cod sursa (job #1549155) | Cod sursa (job #1690133) | Cod sursa (job #32028) | Cod sursa (job #2287594) | Cod sursa (job #605068)
Cod sursa(job #605068)
#include <cstdio>
const int N = 10005;
int n, a[N];
void read() {
char s[N];
gets(s + 1);
n = 0;
for (int i = 1; s[i]; ++ i)
a[++ n] = s[i] - '0';
}
bool solve(int st, int dr) {
int p, dc;
while (1) {
if (st == dr)
return 1 - (a[st] % 2);
if (st == dr - 1)
return (a[st] == a[dr] || a[st] == a[dr] + 11);
dc = a[st] - a[dr];
if (dc != 0 && dc != 1 && dc != 10 && dc != 11)
return 0;
if (dc % 10 == 1)
a[st + 1] += 10;
if (dc >= 10) {
if (a[dr] == 9)
return 0;
p = dr - 1 ;
while (a[p] == 0) {
a[p] = 9;
-- p;
}
if (p == st)
return 0;
-- a[p];
}
++ st;
-- dr;
}
}
int main() {
freopen("invers.in", "r", stdin);
freopen("invers.out", "w", stdout);
int T = 0;
scanf("%d\n", &T);
for (; T > 0; -- T) {
read();
if (n == 1) {
if (a[1] % 2 == 1) {
printf("NU\n");
continue;
}
printf("DA\n");
continue;
}
if (a[1] != 1 || a[n] > 0)
if (solve(1, n)) {
printf("DA\n");
continue;
}
if (a[1] != 1) {
printf("NU\n");
continue;
}
for (int i = 1; i < n; ++ i)
a[i] = a[i + 1];
a[1] += 10;
if (solve(1, n - 1))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}