Pagini recente » Cod sursa (job #1758580) | Cod sursa (job #354192) | Cod sursa (job #343874) | Cod sursa (job #1103909) | Cod sursa (job #605034)
Cod sursa(job #605034)
#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 (a[1] != 1 || a[n] > 0)
if (solve(1, n)) {
printf("DA\n");
continue;
}
if (a[1] != 1 || n == 1) {
printf("NU\n");
continue;
}
a[2] += 10;
if(solve(2, n))
printf("DA\n");
else
printf("NU\n");
}
return 0;
}