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