Pagini recente » Cod sursa (job #2216118) | Cod sursa (job #2143180) | Cod sursa (job #2736165) | Cod sursa (job #1072793) | Cod sursa (job #56415)
Cod sursa(job #56415)
#include <stdio.h>
#define fin "invers.in"
#define fout "invers.out"
#define Nmax 10002
int T,dim;
char v[Nmax];
int absf(int a) {
if (a<0)
a*=-1;
return a;
}
void steal(int p) {
v[p]--;
if (v[p]<0) {
v[p]=9;
if (p>0) steal(p-1);
}
}
int main() {
int i,j,good;
freopen(fin,"r",stdin); freopen(fout,"w",stdout);
scanf("%d",&T);
for (;T>0;--T) {
scanf("%s",&v);
for (dim=0;v[dim]!=(char)NULL;++dim)
v[dim]-='0';
dim--;
//fprintf(stderr,"%d\n",dim);
if (v[0]==1 && dim>1) {
v[1]+=10;
i=1;
}
else
i=0;
j=dim;
for (good=1;i<=j && good;++i,--j) {
//fprintf(stderr,"%d %d\n",v[i],v[j]);
if (i==j && v[i]%2!=0)
good=0;
if (i+1==j && v[i]!=v[j] && v[i]!=v[j]+11)
good=0;
if ( v[i] == v[j] + 1 )
v[i+1]+=10;
else
if ( v[i] == v[j] + 10 ) {
if ( v[i]==19 )
good=0;
steal(j-1);
}
else
if ( v[i] == v[j] + 11 ) {
if ( v[i]==19 )
good=0;
steal(j-1);
v[i+1]+=10;
}
else
if ( v[i] != v[j] )
good=0;
//fprintf(stderr,"%d %d\n",i,j);
}
if (good)
printf("DA\n");
else
printf("NU\n");
}
fclose(stdin); fclose(stdout);
return 0;
}