Pagini recente » Cod sursa (job #2481513) | Cod sursa (job #94885) | Cod sursa (job #2273607) | Cod sursa (job #171580) | Cod sursa (job #56429)
Cod sursa(job #56429)
#include <stdio.h>
#define fin "invers.in"
#define fout "invers.out"
#define Nmax 10002
int T,dim;
char v[Nmax];
void steal(int p) {
v[p]--;
if (v[p]<0) {
v[p]=9;
if (p>0) steal(p-1);
}
}
int test(int i,int j) {
int good;
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;
v[i+1]+=10;
steal(j-1);
}
else
if ( v[i] != v[j] )
good=0;
//fprintf(stderr,"%d %d\n",i,j);
}
return good;
}
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;
good=test(1,dim);
if (!good) {
v[1]-=10;
good=test(0,dim);
}
}
else
good=test(0,dim);
if (good)
printf("DA\n");
else
printf("NU\n");
}
fclose(stdin); fclose(stdout);
return 0;
}