Pagini recente » Cod sursa (job #2908046) | Cod sursa (job #1277997) | Cod sursa (job #2913784) | Cod sursa (job #1644192) | Cod sursa (job #1229085)
#include <cstdio>
int n, a[10005], b[10005];
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--) {
char s[10005];
gets(s);
n = 0;
for (int i = 0; s[i]; ++ i) {
++ n;
a[n] = b[n] = s[i] - '0';
}
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");
}
fclose(stdin);
fclose(stdout);
return 0;
}