Pagini recente » Cod sursa (job #2937397) | Cod sursa (job #945833) | Cod sursa (job #42166) | Cod sursa (job #63757) | Cod sursa (job #837360)
Cod sursa(job #837360)
#include <cstdio>
const int N = 10005;
int n, a[N], b[N];
void read() {
char s[N];
gets(s);
n = 0;
for (int i = 0; s[i]; ++ i) {
++ n;
a[n] = b[n] = s[i] - '0';
}
}
bool solve(int st, int dr) {
int i, 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 == 1 || dc == 11)
a[st + 1] += 10;
if (dc >= 10) {
if (a[dr] == 9)
return 0;
int i;
for (i = dr - 1; a[i] == 0; -- i)
a[i] = 9;
a[i] --;
if (i == st)
return 0;
}
++ 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[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] = b[i + 1];
a[1] += 10;
if (solve(1, n - 1))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}