Cod sursa(job #13008)
Utilizator | Data | 5 februarie 2007 13:43:28 | |
---|---|---|---|
Problema | Invers | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 2.12 kb |
#include<cstdio>
#include<cstring>
#define dim 10005
int N, M;
char s[dim]; int v[dim];
int main()
{
freopen("invers.in", "r", stdin);
freopen("invers.out", "w", stdout);
scanf("%d\n", &N);
int i, j, c, st, dr, ok;
for(i=1; i<=N; ++i)
{
gets(s);
M = strlen(s); ok = 1;
for(j=0; j<M; ++j)
v[j+1] = (int)s[j]-'0';
if(M&1 && v[(M/2)+1]&1)
printf("NU\n");
else
{
for(j=1; j<=(M>>1); ++j)
{
st = j; dr = M-j+1;
if(st == dr+1)
if(v[st] == v[dr] || v[st] == v[dr]+11)
printf("DA\n");
else
printf("NU\n");
else
{
if(v[st] == v[dr]) continue;
else
{
if(v[st] == v[dr]+1)
{
v[st+1] += 10;
continue;
}
if(v[st] == v[dr]+10 && v[st]!=19)
{
v[dr-1] = !v[dr-1] ? 9 : v[dr-1]-1;
continue;
}
if(v[st] == v[dr]+11)
{
v[st+1] += 10;
v[dr-1] = !v[dr-1] ? 9 : v[dr-1]-1;
}
printf("NU\n");
ok = 0;
break;
}
}
}
if(ok)
printf("DA\n");
}
}
fclose(stdin); fclose(stdout);
return 0;
}